JavaWeb07-JavaScript

JS介绍、引入方式

一、什么是JavaScript?

  • Web标准也称为网页标准,由一系列的标准组成,大部分由W3C( World Wide Web Consortium,万维网联盟)负责制定。
    三个组成部分:
    • HTML:负责网页的基本结构(页面元素和内容)。
    • CSS:负责网页的表现效果(页面元素的外观、位置等页面样式,如:颜色、大小等)。
    • JavaScript:负责网页的行为(交互效果)

在这里插入图片描述


  • JavaScript(简称:JS) 是一门跨平台、面向对象的脚本语言。是用来控制网页行为的,它能使网页可交互。
  • JavaScript 和 Java 是完全不同的语言,不论是概念还是设计。但是基础语法类似。
  • JavaScript 在 1995 年由 Brendan Eich 发明,并于 1997 年成为 ECMA 标准。
  • ECMAScript6 (ES6) 是最主流的 JavaScript 版本(发布于 2015 年)。

ECMA: ECMA国际(前身为欧洲计算机制造商协会),制定了标准化的脚本程序设计语言 ECMAScript,这种语言得到广泛应用。而JavaScript是遵守ECMAScript的标准的。



二、JavaScript引入方式

方式一:

  • 内部脚本:将JS代码定义在HTML页面中

    • JavaScript代码必须位于<script></script>标签之间

      在这里插入图片描述

    • 在HTML文档中,可以在任意地方,放置任意数量的<script>

      在这里插入图片描述

    • 一般会把脚本置于<body>元素的底部,可改善显示快速

      在这里插入图片描述


方式二:

  • 外部脚本:将JS代码定义在外部JS文件中,然后引入到HTML页面中

    • 外部JS文件中,只包含JS代码,不包含<script>标签

      在这里插入图片描述

    • <script>标签不能自闭合

      • 正确写法:

        在这里插入图片描述

      • 错误写法:

        在这里插入图片描述



小结

  1. JS引入方式
    • 内部脚本:将JS代码定义在html页面的<script></script>
      建议:将<script></script>放在<body>的底部
    • 外部脚本:将JS代码定义在js文件中,通过<script></script>标签引入
      注意:通过<script>标签引入外部js文件时,标签不可以自闭合



JavaScirpt基础语法

一、JS书写语法

  • 区分大小写:与Java一样,变量名、函数名以及其他一切东西都是区分大小写的

  • 每行结尾的分号可有可无

  • 注释:

    • 单行注释

      // 注释内容

    • 多行注释

      /*

      ​ 注释内容1

      ​ 注释内容2

      */

  • 大括号表示代码块

    在这里插入图片描述



二、JS输出语句

在这里插入图片描述

  • 使用 window.alert() 写入警告框

    在这里插入图片描述

  • 使用 document.write() 写入HTML输出

    在这里插入图片描述

  • 使用 console.log() 写入浏览器控制台

    在这里插入图片描述



三、JS变量

1、var关键字

  • JavaScript 中用 var 关键字(variable的缩写)来声明变量。
  • JavaScript 是一门弱类型语言,变量可以存放不同类型的值
  • 变量名命名规则:
    • 组成字符可以是任何字母、数字、下划线 _ 或 美元符合 $
    • 数字不能开头
    • 建议使用驼峰命名

  • var关键字定义变量的特点:

    1. 作用域为全局
    2. 可以重复定义(但会覆盖前面同名变量的值)

    在这里插入图片描述


2、let关键字

  • ECMAScript 6 新增了 let 关键字来定义变量。
  • 它的用法类似于 var,但是所声明的变量,只在 let 关键字所在的代码块内有效,且不允许重复声明。

在这里插入图片描述


3、const关键字

  • ECMAScript 6 新增了 const 关键字,用来声明一个只读的常量。
  • 一旦声明,常量的值就不能改变。

在这里插入图片描述
在这里插入图片描述


小结

  1. 变量
    • 特点:JS是弱类型语言,变量可以存放不同类型的值
    • 声明:
      ① var:声明变量,全局作用域 / 函数作用域,允许重复声明
      ② let:声明变量,块级作用域,不允许重复声明
      ③ const:声明常量,一旦声明,常量的值不能改变


四、JS数据类型

  • JavaScript中分为:原始类型、引用类型

    var a = 20;
    a = "张三";
    
  • number:数字(整数、小数、NaN(Not a Number: 不是一个数字))

  • string:字符串(单双引号皆可)

  • boolean:布尔(true、false)

  • null:对象为空

  • undefined:当声明的变量未初始化时,该变量的默认值是undefined

  • **使用typeof**运算符可以获取数据的类型:

    var a = 20;
    alert(typeof a);
    

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-数据类型</title>
</head>
<body>
    
</body>

<script>
    alert(typeof 10);       //number
    alert(typeof 3.14);     //number
    alert(typeof NaN);      //number

    alert(typeof "");       //string
    alert(typeof "A");      //string
    alert(typeof '我爱');   //string

    alert(typeof true);     //boolean
    alert(typeof false);    //boolean
    
    /*
    为什么 typeof 运算符对于 null 值会返回 "Object"。这实际上是 JavaScript 最初实现中的一个错误,
    然后被 ECMAScript 沿用了。现在,null 被认为是对象的占位符,从而解释了这一矛盾,
    但从技术上来说,它仍然是原始值。
    */
    alert(typeof null);     //object

    var a;
    alert(typeof a);        //undefined
</script>

</html>


五、JS运算符

  • JS运算符与Java语言的运算符一样
    • 算术运算符:+ , - , * , / , % , ++ , –
    • 赋值运算符:= , += , -= , *= , /= , %=
    • 比较运算符:> , < , >= , <= , != , == , ===
    • 逻辑运算符:&& , || , !
    • 三元运算符:条件表达式 ? true_value : false_value
  • 唯独 === 不一样
    • ==
      • 当比较时,会进行将两个值的数据类型转换成一样的,才进行比较
      • 如果值一样,则返回true
    • ===(全等):
      • 当比较时,不会进行将两个值的数据类型转换成一样的
      • 如果类型一样,值一样,则返回true

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-运算符</title>
</head>
<body>
    
</body>

<script>
    alert(20 == "20");  //true
    alert(20 === "20"); //false
    alert(20 === 20);   //true
</script>

</html>

  • 字符串类型转为数字:
    • 将字符串字面值转为数字。 如果字面值不是数字,则转为NaN。
  • 其他类型转为boolean:
    • Number:0 和 NaN为false,其他均转为true。
    • String:空字符串为false,其他均转为true。
    • Null 和 undefined :均转为false。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-运算符</title>
</head>
<body>
    
</body>

<script>
    alert(20 == "20");  //true
    alert(20 === "20"); //false
    alert(20 === 20);   //true

    // 类型转换 - 其他类型转换为数字
    alert(parseInt("12"));      //12
    alert(parseInt("12A45"));   //12
    alert(parseInt("A45"));     //NaN

    // 类型转换 - 其他类型转换为boolean
    if(0){
        alert("0 转换为false");
    }
    if(NaN){
        alert("NaN 转换为false");
    }
    if(-1){
        alert("除0和NaN为false,其他均转为true");
    }

    if(""){
        alert("空字符串转换为false");
    }
    if(" "){
        alert("空字符串为false,其他都是true");
    }

    if(null){
        alert("null 转换为 false");
    }
    if(undefined){
        alert("undefined 转换为 false");
    }
</script>

</html>


六、JS流程控制语句

  • JS的流程控制语句也与Java的一样,因此不细讲了,因为后面用到的时候会细讲
    • if…else if …else…
    • switch
    • for
    • while
    • do … while



函数

1、介绍

  • 函数(方法)是被设计为执行特定任务的代码块。

2、定义

  • JavaScript函数通过 function 关键字进行定义,语法为:

  • 方式1:

    function functionName(参数1,参数2..){
    	//要执行的代码程序
    }
    
  • 方式2:

    var functionName = function(参数1,参数2..){
    	//要执行的代码程序
    }
    

3、注意事项

  • 形参参数不需要类型。因为JavaScript是弱类型语言。
  • 返回值也不需要定义类型,可以在函数内部直接使用return返回即可。
  • 函数调用可以传递任意个数的参数。

4、调用

  • 格式:

    函数名称(实际参数列表); //无返回值调用
    var 变量名 = 函数名称(实际参数列表); //有返回值调用时需接收返回值
    

5、范例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-函数</title>
</head>
<body>
    
</body>

<script>
    //定义函数-1
    function add(a,b){
        alert(a+b);
    }

    //定义函数-2
    var minus = function(a,b){
        return a-b;
    }

    //调用函数
    add(15, 5); //20
    var result = minus(15, 5); //10
    alert(result);
</script>

</html>



JS对象

1、Array

定义、访问
  • JavaScript中Array对象用于定义数组。

  • 定义:

    • 方式一

      var 变量名 = new Array(元素列表);
      

      在这里插入图片描述

    • 方式二

      var 变量名 = [元素列表];
      

      在这里插入图片描述

  • 访问:

    arr[索引] = 值;
    

    在这里插入图片描述

  • 注意事项

    • JavaScript中的数组相当于Java中的集合,数组的长度是可变的,而JavaScript是弱类型,所以可以存储任意的类型的数据。

      在这里插入图片描述
      在这里插入图片描述


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-Array</title>
</head>
<body>
    
</body>

<script>
    //1.定义数组
    //方式一
    var arr1 = new Array(1,2,3,4);
    //输出数组到浏览器控制台
    console.log(arr1);

    //方式二
    var arr2 = [1,2,3,4];
    console.log(arr2);

    //2.访问
    console.log(arr2[2]);

    //3.特点:
    //数组的长度是可变的
    arr2[8] = 23;
    console.log(arr2);
    //可以存储任意类型的数据
    arr2[9] = 'hello';
    console.log(arr2);
</script>

</html>


属性、方法
属性描述
length设置或返回数组中元素的数量
方法描述
forEach()遍历数组中的每个有值的元素,并调用一次传入的函数
push()将新元素添加到数组的末尾,并返回新的长度
splice()从数组中删除元素
  • 箭头函数(ES6):

    是用来简化函数定义语法的。

  • 具体形式为:

    (...) => {...}
    
  • 如果需要给箭头函数起名字:

    var xxx = (...) => {...}
    

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-Array</title>
</head>
<body>
    
</body>

<script>
    //1.定义数组
    //方式一
    var arr1 = new Array(1,2,3,4);
    //输出数组到浏览器控制台
    console.log(arr1);

    //方式二
    var arr2 = [1,2,3,4];
    console.log(arr2);

    //2.访问
    console.log(arr2[2]);

    //3.特点:
    //数组的长度是可变的
    arr2[8] = 23;
    console.log(arr2);
    //可以存储任意类型的数据
    arr2[9] = 'hello';
    console.log(arr2);

    //for循环:遍历数组中的每个元素
    for (let i = 0; i < arr2.length; i++) {
        console.log(arr2[i]);
    }

    console.log('-----------------------------');
    //forEach:遍历数组中的每个有值的元素,并调用一次传入的函数
    arr2.forEach(function(e) {
        console.log(e);
    });

    //箭头函数(ES6):是用来简化函数定义语法的。
    arr2.forEach(e => {
        console.log(e);
    });

    console.log('-----------------------------');

    //push():将新元素添加到数组的末尾,并返回新的长度
    arr2.push('a',60);
    console.log(arr2);

    //splice():从数组中删除元素
    arr2.splice(1,2);
    console.log(arr2);
</script>

</html>

在这里插入图片描述



2、String

定义
  • 方式一:

    var 变量名 = new String("...");
    

    在这里插入图片描述

  • 方式二:

    var 变量名 = "...";
    

    在这里插入图片描述


属性
属性描述
length字符串的长度

在这里插入图片描述


方法
方法描述
charAt()返回在指定位置的字符
indexOf()检索字符串
trim()去除字符串两边的空格
substring()截取字符串中开始索引到结束索引之间的字符(包头不包尾)

在这里插入图片描述


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-String</title>
</head>
<body>
    
</body>

<script>
    //1.定义字符串
    //方式一
    var str1 = new String("Hello String!");
    console.log(str1);

    //方式二
    var str = "  Hello String!   ";
    console.log(str);
    
    //2.属性:length
    console.log(str.length);

    //3.方法
    //返回字符串中索引为2的字符
    var a = str.charAt(2);
    console.log(a);

    //返回字符串中字符为'o'的索引位置
    var b = str.indexOf('o');
    console.log(b);

    //去除字符串两边所有的空格
    var newStr = str.trim();
    console.log(newStr);

    //截取字符串中2到7索引之间的字符
    console.log(str.substring(2,7));
</script>

</html>

在这里插入图片描述



3、JSON

(1)JS自定义对象
定义
var 对象名 = {
	属性名1: 属性值1,
	属性名2: 属性值2,
	属性名3: 属性值3,
	//函数原格式
	函数名称: function(形参列表){...}
	//函数简化格式
	函数名称(形参列表){...}
};
调用
对象名.属性名;
对象名.函数名();
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-自定义对象</title>
</head>
<body>
    
</body>

<script>
    //自定义对象
    var student = {
        name: "张飞",
        age: 38,
        gender: "男",
        
        eat: function(){
            console.log(student.name + "正在用膳~");
        },

        //函数简化格式
        pk() {
            console.log(student.name + "正在与敌人打架~");
        }
    };

    //调用对象属性
    console.log("学生信息:姓名-" + student.name + ",年龄-" + student.age
    + ",性别-" + student.gender);

    //调用对象函数
    student.eat();
    student.pk();
</script>

</html>

在这里插入图片描述


(2)介绍
  • 概念:JavaScript Object Notation,JavaScript对象标记法。

  • JSON是通过 JavaScript 对象标记法书写的文本

  • JSONJS对象的书写格式差不多,都是以键值对(key: value)的形式书写,

    只不过JSON键(key)是用双引号引起来的:

    • JS对象

      {
      	name: "张飞",
          age: 38,
          gender: "男"
      };
      
    • JSON

      {
      	"name": "张飞",
          "age": 38,
          "gender": "男"
      };
      

(3)基础语法
定义
var 变量名 = '{"key1": value1, "key2": value2}';

在这里插入图片描述

  • value的数据类型为
    1. 数字(整数或浮点数)
    2. 字符串(在双引号中)
    3. 逻辑值(true或false)
    4. 数组(在方括号中)
    5. 对象(在花括号中)
    6. null

JS对象与JSON字符串类型互转
  • JSON字符串——>JS对象

    var jsObject = JSON.parse(JSON字符串);
    
  • JS对象——>JSON字符串

    var jsonStr = JSON.stringify(JS对象);
    
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-JSON</title>
</head>
<body>
    
</body>

<script>
    
    //定义JSON
    var userStr = '{"name": "张飞", "age": 38, "addr": ["广西", "广东"]}';

    //JSON字符串——>JS对象
    var jsObject = JSON.parse(userStr);
    console.log(jsObject);

    //JS对象——>JSON字符串
    var jsonStr = JSON.stringify(jsObject);
    console.log(jsonStr);

</script>

</html>

在这里插入图片描述



4、BOM

概念
  • Browser Object Model(浏览器对象模型),允许JavaScript与浏览器对话,JavaScript将浏览器的各个组成部分封装为对象。

  • 组成:

    • Windwo:浏览器窗口对象

      在这里插入图片描述

    • Navigator:浏览器对象

      在这里插入图片描述

    • Screen:屏幕对象

      在这里插入图片描述

    • History:历史记录对象

      在这里插入图片描述

    • Location:地址栏对象

      在这里插入图片描述



Window
  • 浏览器窗口对象。

  • 获取:直接使用window,其中window.可以省略:

    window.alert("Hello BOM Window");
    alert("Hello BOM");
    
  • 属性:

    1. history:对History对象的只读引用。
    2. location:用于窗口或框架的Location对象。
    3. navigator:对Navigator对象的只读引用。
  • 方法:

    1. alert():显示带有一段消息和一个确认按钮的警告框。
    2. confirm():显示带有一段消息以及确认按钮和取消按钮的对话框。
    3. setInterval():按照指定的周期(以毫秒计)来调用函数或计算表达式。
    4. setTimeout():在指定的毫秒数后调用函数或计算表达式。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-BOM</title>
</head>
<body>
    
</body>

<script>
    
    //BOM:
    //1.Window
    //方法
    //显示带有一段消息和一个确认按钮的警告框
    window.alert("Hello BOM Window");
    alert("Hello BOM");

    //显示带有一个段消息以及确认按钮和取消按钮的对话框
    //点击确定返回true,点击取消返回false
    var flag = confirm("您确定要删除当前选中数据吗?");
    alert(flag);

    //定时器:延迟指定时间后执行一次
    setTimeout(function(){
        alert("JS!")
    }, 3000);

    //定时器:周期性的执行某一个函数
    var i = 0;
    setInterval(function(){
        i++;
        console.log("定时器执行了" + i + "次");
    }, 2000);


</script>

</html>

Location
  • 地址栏对象

  • 获取:使用window.location获取,其中window.可以省略:

    window.location.属性;
    location.属性;
    
  • 属性:

    1. href:设置或返回完整的URL
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-BOM</title>
</head>
<body>
    
</body>

<script>
    
    //BOM:
    //2.Location
    //获取地址栏对象
    alert(location.href);
    //设置地址并自动跳转
    location.href = "http://www.baidu.com";

</script>

</html>


5、DOM

概念
  • Document Object Model(文档对象模型)。

  • 将标记语言的各个组成部分封装为对应的对象:

    1. Document:整个文档对象
    2. Element:元素对象
    3. Attribute:属性对象
    4. Text:文本对象
    5. Comment:注释对象

    在这里插入图片描述


  • DOM是 W3C(万维网联盟)的标准,定义了访问HTML和XML文档的标准,分为3个不同的部分:
    1. Core DOM – 所有文档类型的标准模型
      • Document:整个文档对象
      • Element:元素对象
      • Attribute:属性对象
      • Text:文本对象
      • Comment:注释对象
    2. XML DOM – XML文档的标准模型
    3. HTML DOM – HTML文档的标准模型
      • Image:<img>
      • Button:<input type='button'>

对象获取
  • HTML中的Element对象可以通过Document对象获取,而Document对象是通过window对象获取的。

  • Document对象中提供了以下获取Element元素对象的函数:

    1. 根据id获取,返回单个Element对象

      var h1 = document.getElementById('h1');
      
    2. 根据标签名称获取,返回Element对象数组

      var divs = document.getElementsByTagName('div');
      
    3. 根据name获取,返回Element对象数组

      var hobbys = document.getElementsByName('hobby');
      
    4. 根据class属性值获取,返回Element对象数组

      var clss = document.getElementsByClassName('cls');
      
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-DOM</title>
</head>

<body>
    <img id="img1" src="img/off.gif"> <br>
    <div class="cls">B站大学</div> <br>
    <div class="cls">等你来战!</div> <br>
    <input type="checkbox" name="hobby"> 跑步
    <input type="checkbox" name="hobby"> 唱歌
    <input type="checkbox" name="hobby"> 游泳

    <script>
        //1.根据id获取,返回单个Element对象
        var img1 = document.getElementById('img1');
        alert(img1);

        //2.根据标签名称获取,返回Element对象数组
        var divs = document.getElementsByTagName('div');
        for (let i = 0; i < divs.length; i++) {
            alert(divs[i]);
        }

        //3.根据name获取,返回Element对象数组
        var ins = document.getElementsByName('hobby');
        for (let i = 0; i < ins.length; i++) {
            const hobby = ins[i];
            alert(hobby);
        }

        //4.根据class获取,返回Element对象数组
        var clss =  document.getElementsByClassName('cls');
        for (let i = 0; i < clss.length; i++) {
            alert(clss[i]);
        }
    </script>

</body>

</html>

案例
  • 通过DOM操作,完成如下效果实现:

    1. 点亮灯泡
    2. 将所有的div标签的标签体内容后面加上:very good(红色字体)
    3. 使所有的复选框呈现被选中的状态

    在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-对象-DOM案例</title>
</head>
<body>
    <img id="myImg" src="img/off.gif"> <br>
    <div class="cls">B站大学</div> <br>
    <div class="cls">等你来战!</div> <br>
    <input type="checkbox" name="hobby"> 跑步
    <input type="checkbox" name="hobby"> 唱歌
    <input type="checkbox" name="hobby"> 游泳

    <script>
        //1.点亮灯泡
        var myImg = document.getElementById('myImg');
        myImg.src = "img/on.gif";

        //2.将所有的div标签体内容后面加上: very good(红色字体)
        var divs = document.getElementsByTagName('div');
        for (let i = 0; i < divs.length; i++) {
            const div = divs[i];
            div.innerHTML += "<font color='red'> very good</font>";
        }

        //3.使所有的复选框呈现被选中的状态
        var ins = document.getElementsByName('hobby');
        for (let i = 0; i < ins.length; i++) {
            const checkbox = ins[i];
            checkbox.checked = true; //true: 选中状态
        }
    </script>
</body>
</html>

在这里插入图片描述


查询官方文档
  • 点亮电灯:其实就是更新图片的src属性

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述


  • 将所有的div标签的标签体内容后面加上:very good(红色字体)

    在这里插入图片描述

    在这里插入图片描述


  • 使所有的复选框呈现被选中的状态

    在这里插入图片描述




事件监听

1、概念

  • 事件:HTML事件是发生在HTML元素上的“事情”。例如:
    • 按钮被点击
    • 鼠标移动到元素上
    • 按下键盘的按键
  • 事件监听:JavaScript可以在事件被侦测到时 执行代码


2、事件绑定

方式一
  • 通过HTML标签中的事件属性进行绑定

    <input type="button" onclick="on()" value="按钮1">
    
    <script>
        function on(){
            alert('我被点击了!');
        }
    </script>
    
方式二
  • 通过DOM元素属性绑定

    <input type="button" id="btn" value="按钮2">
    
    <script>
        document.getElementById('btn').onclick=function(){
            alert('我被点击了!');
        }
    </script>
    


3、常见事件

事件名说明
onclick鼠标单击事件
onblur元素失去焦点
onfocus元素获得焦点
onload某个页面或图像被完成加载
onsubmit当表单提交时触发该事件
onkeydown键盘的某个键被按下
onmouseover鼠标被移到某元素之上
onmouseout鼠标从某元素移开
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件</title>
</head>
<!-- onload: 页面或图像被完成加载 -->
<body onload="load()">
    
    <!-- 表单: -->
    <!-- onsubmit: 当表单提交时触发该事件 -->
    <form action="" style="text-align: center;" onsubmit="sfn()">
        <!-- 
            onblur: 元素失去焦点
            onfocus: 元素获得焦点
            onkeydown: 键盘的某个键被按下
         -->
        <input type="text" name="username" onblur="bfn()" onfocus="ffn()" onkeydown="kfn()">

        <input id="b1" type="submit" value="提交">

        <!-- onclick: 鼠标单击事件 -->
        <input id="b2" type="button" value="单击事件" onclick="fn1()">
    </form>

    <br><br><br>

    <!-- 表格: -->
    <!-- 
        onmouseover: 鼠标被移到元素之上
        onmouseout: 鼠标从某元素移开
     -->
    <table width="800px" border="1" cellspacing="0" align="center" onmouseover="over()" onmouseout="out()">
        <tr>
            <th>学号</th>
            <th>姓名</th>
            <th>分数</th>
            <th>评语</th>
        </tr>
        <tr>
            <td>001</td>
            <td>关羽</td>
            <td>87</td>
            <td>良好</td>
        </tr>
        <tr>
            <td>002</td>
            <td>张飞</td>
            <td>99</td>
            <td>优秀</td>
        </tr>
    </table>

    <script>
        // 事件监听:
        // 页面加载完成
        function load(){
            console.log("页面加载完成~");
        }

        // 元素失去焦点
        function bfn(){
            console.log("失去焦点~");
        }

        // 元素获得焦点
        function ffn(){
            console.log("获得焦点~");
        }

        // 键盘的某个键被按下
        function kfn(){
            console.log("键盘的键被按下了!");
        }

        // 鼠标单击事件
        function fn1(){
            console.log("单击事件按钮被点击了!");
        }

        // 鼠标被移到某元素之上
        function over(){
            console.log("鼠标移入了~");
        }

        // 鼠标从某元素移开
        function out(){
            console.log("鼠标移出了~");
        }

        // 当表单提交时触发
        function sfn(){
            //为啥不用console.log()?因为表单提交后,页面都会自动刷新
            // console.log("表单提交成功!!");
            alert("表单提交成功!!");
        }
    </script>

</body>
</html>


4、案例

  • 通过事件监听及DOM操作,完成如下效果实现:

    ① 点击 “点亮” 按钮则灯泡亮起来,点击 “熄灭” 按钮则灯泡熄灭。

    ② 输入框鼠标聚焦后,展示小写;鼠标离焦后,展示大写。

    ③点击 “全选” 按钮使所有的复选框呈现被选中的状态;点击 “反选” 按钮使所有的复选框呈现取消勾选的状态。

    在这里插入图片描述



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS-事件-案例</title>
</head>
<body onload="load()">
    
    <!-- 灯泡 -->
    <img id="myImg" src="img/off.gif"> <br>

    <!-- 点亮、熄灭按钮 -->
    <input id="lighten" type="button" value="点亮">
    <input id="dead" type="button" value="熄灭">
    <br><br>

    <!-- 输入框 -->
    <input id="name" type="text" value="ITCAST" onfocus="lower()" onblur="upper()">
    <br><br>

    <!-- 复选框 -->
    <input type="checkbox" name="hobby"> 电影
    <input type="checkbox" name="hobby"> 旅游
    <input type="checkbox" name="hobby"> 游戏
    <br>

    <!-- 全选、反选按钮 -->
    <input type="button" value="全选" onclick="selectAll()">
    <input type="button" value="反选" onclick="reverseSelect()">

</body>

<!-- 事件监听: -->
<script>
    //页面加载完成
    function load(){
        console.log("页面加载完成~");
    }

    //点击 “点亮” 按钮则灯泡亮起来
    document.getElementById('lighten').onclick = function(){
        console.log("点亮灯泡");
        //根据id获取Element对象
        var myImg = document.getElementById('myImg');
        myImg.src = "img/on.gif";
    }

    //点击 “熄灭” 按钮则灯泡熄灭。
    document.getElementById('dead').onclick = function(){
        console.log("熄灭灯泡");
        //根据id获取Element对象
        var myImg = document.getElementById('myImg');
        myImg.src = "img/off.gif";
    }

    //输入框鼠标聚焦后,展示小写;
    function lower(){
        console.log("输入框聚焦中..");
        //根据id获取输入框元素对象
        var input = document.getElementById('name');
        //将name的value值转为小写
        input.value = input.value.toLowerCase();
    }

    //输入框鼠标离焦后,展示大写。
    function upper(){
        console.log("输入框已离焦!");
        //根据id获取输入框元素对象
        var input = document.getElementById('name');
        //将name的value值转为大写
        input.value = input.value.toUpperCase();
    }

    //点击 “全选” 按钮使所有的复选框呈现被选中的状态;
    function selectAll(){
        console.log("全选按钮被点击了");
        //根据name属性值获取复选框元素对象
        var hobbys = document.getElementsByName('hobby');
        for (let i = 0; i < hobbys.length; i++) {
            const hobby = hobbys[i];
            hobby.checked = true; //true: 选中状态
        }
    }

    //点击 “反选” 按钮使所有的复选框呈现取消勾选的状态。
    function reverseSelect(){
        console.log("反选按钮被点击了");
        //根据name属性值获取复选框元素对象
        var hobbys = document.getElementsByName('hobby');
        for (let i = 0; i < hobbys.length; i++) {
            const hobby = hobbys[i];
            hobby.checked = false; //false: 未选中状态
        }
    }
</script>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值