JavaScrip知识点总结

一、JavaScript 介绍

Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。

特点:

  1. 交互性(它可以做的就是信息的动态交互)
  2. 安全性(不允许直接访问本地硬盘)
  3. 跨平台性(只要是可以解释JS的浏览器都可以执行,和平台无关)

JavaScript与Java的区别:

  1. JavaScript的程序代码直接嵌入HTML文件中;而Java程序代码写在Java源文件中;
  2. JavaScript是弱类型语言,比如在使用变量前可以不声明变量而直接使用;Java是强制类型语言,比如在使用变量前必须先声明变量;
  3. JavaScript的程序代码由客户端浏览器解释、执行;Java程序则必须先编译成class文件再由JVM执行

二、JavaScript 和 html 代码的结合方式

2.1 第一种方式

  • 只需要在 head 标签中,或者在 body 标签中,使用 script 标签来书写 JavaScript 代码

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        // alert是JavaScript语言提供的一个警告框函数。
        // 它可以接收任意类型的参数,这个参数就是警告框的提示信息
        alert("hello javaScript!");
    </script>
</head>
<body>
</body>
</html>

2.2 第二种方式

  • 使用 script 标签引入单独的 JavaScript 代码文件

文件目录:
在这里插入图片描述
html 代码内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
        现在需要使用script引入外部的js文件来执行
            src 属性专门用来引入js文件路径(可以是相对路径,也可以是绝对路径)

        script标签可以用来定义js代码,也可以用来引入js文件
        但是,两个功能二选一使用。不能同时使用两个功能
    -->
    <script type="text/javascript" src="1.js"></script>
    <script type="text/javascript">
        alert("国哥现在可以帅了");
    </script>
</head>
<body>

</body>
</html>

三、变量

  • 什么是变量?变量是可以存放某些值的内存的命名。

  • JavaScript 的变量类型:

      数值类型:		number
      字符串类型:	string
      对象类型:		object
      布尔类型:		boolean
      函数类型:		function
    
  • JavaScript 里特殊的值:

      undefined	未定义,所有js变量未赋于初始值的时候,默认值都是undefined.
      null	空值
      NaN	全称是:Not a Number。非数字。非数值。
    
  • JS 中的定义变量格式:

      var 变量名;
      var 变量名 = 值;
    

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var i;
        alert(i);//undefined

        // typeof() 是 JavaScript 语言提供的一个函数。
        // 它可以取变量的数据类型返回
        alert(typeof(i));//undefined

        i = "abc";
        alert(typeof(i));//string

        i = 12;
        alert(i);//12
        alert( typeof(i) ); // number

        var a = 12;
        var b = "abc";
        alert(a*b);//NaN
    </script>

</head>
<body>

</body>
</html>

四、运算符

4.1 关系(比较)运算符

  • 等于: == 等于是简单的做字面值的比较
  • 全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
    示例代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var a = "12";
        var b = 12;
        alert(a == b);//true: == 等于是简单的做字面值的比较
        alert(a === b);//false: === 除了做字面值的比较之外,还会比较两个变量的数据类型

    </script>

</head>
<body>

</body>
</html>

4.2 逻辑运算符

且运算: &&
或运算: ||
取反运算: !
  • 在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
    0 、null、 undefined、””(空串) 都认为是 false;

&& 且运算:
有两种情况:
第一种:当表达式全为真的时候。返回最后一个表达式的值。
第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值

|| 或运算:
第一种情况:当表达式全为假时,返回最后一个表达式的值
第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值

并且 && 与运算 和 ||或运算 有短路。
短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        /*
        在JavaScript语言中,所有的变量,都可以做为一个boolean类型的变量去使用。
        0 、null、 undefined、””(空串) 都认为是 false;
        */
        if(0 || null || undefined || ""){
     
     
        }else{
     
     
            alert("0 、null、 undefined、””(空串) 都认为是 false");
        }
        /*
        && 且运算。
		有两种情况:
		第一种:当表达式全为真的时候。返回最后一个表达式的值。
		第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
         */
        var a = "abc";
        var b = true;
        var d = false;
        var c = null;
        alert(a && b);//true
        alert(b && a);//abc
        alert(a && d);//false
        alert(a && c);//null
        alert(a && d && c);//false
        /*
        || 或运算
       第一种情况:当表达式全为假时,返回最后一个表达式的值
       第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值
         */
        alert(d || c);//false
        alert(c || d);//null
        alert(a || c);//abc
        alert(b || c);//true

    </script>
</head>
<body>

</body>
</html>

五、数组

JS中数组的格式:

var 数组名 = []; // 空数组
var 数组名 = [1 , ’abc’ , true]; // 定义数组同时赋值元素
  • javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var arr1 = [];//定义一个空数组
        var arr2 = [true,1];//定义数组的同时赋值元素
        alert(arr1.length);//0

        arr1[0] = 12;
        alert(arr1[0]);
        alert(arr1.length);//1

        //javaScript语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作
        arr1[2] = "abc";
        alert(arr1[2]);//abc
        alert(arr1.length);//3
        alert(arr1[1]);//undefined

        //数组的遍历
        for(var i = 0;i<arr1.length;i++){
     
     
            alert(arr1[i]);
        }

    </script>
</head>
<body>

</body>
</html>

六、函数

6.1 函数的二种定义方式

6.1.1 方式一

  • 使用 function 关键字来定义函数。
    使用的格式如下:

      function 函数名(形参列表){
      	函数体
      }
    
  • 在 JavaScript 语言中,如何定义带有返回值的函数?
    只需要在函数体内直接使用 return 语句返回值即可!

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //定义一个无参函数
        function fun1(){
     
     
            alert("无参函数fun()被调用了");
        }
        //函数调用
        fun1();

        //定义一个带参函数
        function fun2(a,b){
     
     
            alert("有参函数fun2()被调用了a=>"+a+",b=>"+b);
        }
        //函数调用
        fun2(12,"abc");

        //定义带有返回值的函数
        function sum(num1,num2){
     
     
            var result = num1+num2;
            return result;
        }
        alert(sum(2,3));//5
    </script>
</head>
<body>

</body>
</html>

6.1.2 方式二

  • 函数的第二种定义方式,格式如下:

      var 函数名 = function(形参列表) { 函数体 }
    

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        var fun1 = function(){
     
     
            alert("无参函数");
        }
        fun1();
        var fun2 = function(a,b){
     
     
            alert("有参函数a="+a+",b="+b);
        }
        fun2(1,"abc");

        var fun3 = function(num1,num2){
     
     
            return num1+num2;
        }
        alert(fun3(100,30));//130

        //注:在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义
    </script>
</head>
<body>

</body>
</html>

注:在Java中函数允许重载。但是在JS中函数的重载会直接覆盖掉上一次的定义

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //注:在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义
        function fun(a,b){
     
     
            alert("有参函数fun(a,b)");
        }
        function fun(){
     
     //无参函数将覆盖有参函数
            alert("无参函数fun()");
        }
        fun(1,"abc");//执行结果:无参函数fun()
    </script>
</head>
<body>

</body>
</html>

6.2 函数的 arguments 隐形参数(只在function函数内)

  • 就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数。
  • 隐形参数特别像 java 基础的可变长参数一样。
    public void fun( Object … args ); 可变长参其实是一个数组。
    那么 js 中的隐形参数也跟 java 的可变长参数一样。操作类似数组。

代码实例:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //函数的 arguments  隐形参数
        function fun(a){
     
     
            alert(arguments);//[object Arguments]
            alert(arguments.length);//3,查看参数个数
            alert(arguments[0]);//1
            alert(a);//1,arguments[0]===a
            alert(arguments[1]);//ab
            alert(arguments[2]);//true
            
            //遍历arguments
            for(var i = 0;i<arguments.length;i++){
     
     
                alert(arguments[i]);
            }
            
        }
        //函数调用
        fun(1,"ab",true);
    </script>
</head>
<body>

</body>
</html>

七、JS 中的自定义对象

7.1 Object 形式的自定义对象

对象的定义:

var 变量名 = new Object(); // 对象实例(空对象)
变量名.属性名 = 值; // 定义一个属性
变量名.函数名 = function(){} // 定义一个函数

对象的访问:

变量名.属性 / 函数名();

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javaScript">

        // 对象的定义:
        //     var 变量名 = new Object(); // 对象实例(空对象)
        //     变量名.属性名 = 值; // 定义一个属性
        //     变量名.函数名 = function(){} // 定义一个函数
        var obj = new Object();
        obj.name = "华仔";
        obj.age = 18;
        obj.fun = function(){
     
     
            alert("姓名:"+this.name+",年龄:"+this.age);
        }

        // 对象的访问:
        //     变量名.属性 / 函数名();
        alert(obj);//[object Object]
        alert(obj.age);//访问对象的属性
        obj.fun();//访问对象的函数
    </script>

</head>
<body>

</body>
</html>

7.2 {}花括号形式的自定义对象

对象的定义:

var 变量名 = { // 空对象
	属性名:值, // 定义一个属性
	属性名:值, // 定义一个属性
	函数名:function(){} // 定义一个函数
};

对象的访问:

变量名.属性 / 函数名();

示例代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        // 对象的定义:
        // var 变量名 = {			// 空对象
        //     属性名:值,			// 定义一个属性
        //     属性名:值,			// 定义一个属性
        //     函数名:function(){}	// 定义一个函数
        // };
        var obj = {
     
     
            name:"国哥",
            age:18,
                fun : function () {
     
     
                alert("姓名:" + this.name + " , 年龄:" + this.age);
            }
        };

        // 对象的访问:
        //     变量名.属性 / 函数名();
        alert(obj.name);
        obj.fun();
    </script>
</head>
<body>

</body>
</html>

八、js 中的事件

  • 什么是事件?事件是电脑输入设备与页面进行交互的响应。我们称之为事件。

  • 常用的事件:

      onload 加载完成事件: 页面加载完成之后,常用于做页面 js 代码初始化操作
      onclick 单击事件: 常用于按钮的点击响应操作。
      onblur 失去焦点事件: 常用用于输入框失去焦点后验证其输入内容是否合法。
      onchange 内容发生改变事件: 常用于下拉列表和输入框内容发生改变后操作
      onsubmit 表单提交事件: 常用于表单提交前,验证所有表单项是否合法。
    
  • 事件的注册又分为静态注册和动态注册两种:

    • 什么是事件的注册(绑定)?
      其实就是告诉浏览器,当事件响应后要执行哪些操作代码,叫事件注册或事件绑定。

    • 静态注册事件:通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。

    • 动态注册事件:是指先通过 js 代码得到标签的 dom 对象,然后再通过 dom 对象.事件名 = function(){} 这种形式赋于事件响应后的代码,叫动态注册。
      动态注册基本步骤:

        1、	获取标签对象
        2、	标签对象.事件名 = fucntion(){}
      

代码实例:

  1. onload 加载完成事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javaScript">
            var onloadFun = function(){
           
           
                alert("静态注册onload事件,所有代码");
            }
    
            //onload事件动态注册,是固定写法
            window.onload = function(){
           
           
                alert("动态注册的onload事件");
            }
        </script>
    </head>
    <!--静态注册onload事件
        onload 事件是浏览器解析完页面之后就会自动触发的事件
        onload 通常用于 <body> 元素,在页面完全载入后(包括图片、css文件等等。)执行脚本代码
    -->
    <body onload="onloadFun();">
    
    </body>
    </html>
    
  2. onclick 单击事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            var onclickFun = function(){
           
           
                alert("静态注册onclick事件");
            }
            window.onload = function () {
           
           
                // 1 获取标签对象
                /*
                * document 是JavaScript语言提供的一个对象(文档)<br/>
                * get           获取
                * Element       元素(就是标签)
                * By            通过。。   由。。经。。。
                * Id            id属性
                *
                * getElementById通过id属性获取标签对象
                **/
                var btnObj = document.getElementById("btn01");
                alert( btnObj );//[object HTMLButtonElement]
                // 2 通过标签对象.事件名 = function(){}
                btnObj.onclick = function () {
           
           
                    alert("动态注册的onclick事件");
                }
            }
        </script>
    </head>
    <body>
        <!--静态注册onclick事件-->
        <button onclick="onclickFun();">按钮1</button>
    
        <button id="btn01">按钮2</button>
    </body>
    </html>
    
  3. onblur 失去焦点事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function onblurFun(){
           
           
                // console是控制台对象,是由JavaScript语言提供,专门用来向浏览器的控制器打印输出, 用于测试使用
                // log() 是打印的方法
                console.log("静态注册失去焦点事件");
            }
            // 动态注册 onblur事件
            window.onload = function(){
           
           
                //1 获取标签对象
                var passwordObj = document.getElementById("password");
                alert(passwordObj);//[object HTMLInputElement]
                //2 通过标签对象.事件名 = function(){};
                passwordObj.onblur = function(){
           
           
                    console.log("动态注册失去焦点事件");
                }
            }
    
        </script>
    </head>
    <body>
        <input type="text" value="姓名" onblur="onblurFun();"/><br/>
        <input type="password" value="密码" id="password"/>
    </body>
    </html>
    
  4. onchange 内容发生改变事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function fun(){
           
           
                alert("女神已经改变了");
            }
            
            window.onload = function(){
           
           
                //1 获取标签对象
                var selectObj = document.getElementById("sel01");
                //2 通过标签对象.事件名 = function(){};
                selectObj.onchange = function(){
           
           
                    alert("男神已经改变了");
                }
            }
        </script>
    </head>
    <body>
        请选择你心中的女神:
        <!--静态注册onchange事件-->
        <select onchange="fun()">
            <option>--女神--</option>
            <option>章子怡</option>
            <option>刘诗诗</option>
            <option>迪丽热巴</option>
        </select>
        
        <!--动态注册onchange事件-->
        请选择你心中的男神:
        <select id="sel01">
            <option>--男神--</option>
            <option>张三</option>
            <option>李四</option>
            <option>王五</option>
        </select>
    </body>
    </html>
    
  5. onsubmit 表单提交事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            // 静态注册表单提交事务
            var onsubmitFun = function(){
           
           
                // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
                alert("静态注册表单提交事件----发现不合法");
                return flase;
            }
    
            window.onload = function(){
           
           
                //1 获取标签对象
                var formObj = document.getElementById("form01");
                //2 通过标签对象.事件名 = function()
                formObj.onsubmit = function(){
           
           
                    alert("动态注册表单提交事件----发现不合法");
                    return false;
                }
            }
        </script>
    </head>
    <body>
        <!--return false 可以组织表单提交-->
        <form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();" >
            <input type="submit" value="静态注册"/>
        </form>
    
        <form action="http://localhost:8080" id="form01">
            <input type="submit" value="动态注册"/>
        </form>
    </body>
    </html>
    

十、DOM 模型

DOM 全称是 Document Object Model 文档对象模型,通过它,我们可以访问HTML文档对象属性、方法、事件,还可以对其进行操作。

10.1 节点

在 HTML DOM 中,所有事物都是节点。DOM 是被视为节点树的 HTML。

  1. 节点Node,是构成我们网页的最基本的组成部分,网页中的每一个部分都可以称为是一个节点。
    2.比如:html标签、属性、文本、注释、整个文档等都是一个节点。
  2. 虽然都是节点,但是实际上他们的具体类型是不同的。
    4.比如:标签我们称为元素节点;属性称为属性节点;文本称为文本节点;文档称为文档节点。
  3. 节点的类型不同,属性和方法也都不尽相同。

  • 节点:Node——构成HTML文档最基本的单元。
  • 常用节点分为四类
  1. 文档节点:整个HTML文档
  2. 元素节点:HTML文档中的HTML标签
  3. 属性节点:元素的属性
  4. 文本节点:HTML标签中的文本内容
    在这里插入图片描述
  1. 文档节点(document)

    1. 文档节点document,代表的是整个HTML文档,网页中的所有节点都是它的子节点。
    2. document对象作为window对象的属性存在的,我们不用获取可以直接使用。
    3. 通过该对象我们可以在整个文档访问内查找节点对象,并可以通过该对象创建各种节点对象。
  2. 元素节点(Element)

    1. HTML中的各种标签都是元素节点,这也是我们最常用的一个节点。
    2. 浏览器会将页面中所有的标签都转换为一个元素节点,我们可以通过document的方法来获取元素节点。
    3. 比如:document.getElementById() // 根据id属性值获取一个元素节点对象
  3. 文本节点(Text)

    1. 文本节点表示的是HTML标签以外的文本内容,任意非HTML的文本都是文本节点。
    2. 它包括可以字面解释的纯文本内容。
    3. 文本节点一般是作为元素节点的子节点存在的。
    4. 获取文本节点时,一般先要获取元素节点。在通过元素节点获取文本节点。
    5. 例如:元素节点.firstChild; // 获取元素节点的第一个子节点,一般为文本节点。
  4. 属性节点(Attr)

    1. 属性节点表示的是标签中的一个一个的属性,这里要注意的是属性节点并非是元素节点的子节点,而是元素节点的一部分。
    2. 可以通过元素节点来获取指定的属性节点。
    3. 例如:元素节点.getAttributeNode(“属性名”);
    4. 注意:我们一般不使用属性节点。

10.2 节点相关的属性和方法

  1. 获取元素节点(document对象调用)

    通过document对象调用

    1. getElementById():通过id属性获取一个元素节点对象
    2. getElementsByTagName():通过标签名获取一组元素节点对象
    3. getElementsByName():通过name属性获取一组元素节点对象

    补充:

    • document.createElement( tagName):通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名
    1. getElementById方法示例代码:(两种常见的验证提示效果)

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript">
              /*
              * 需求:当用户点击了较验按钮,要获取输出框中的内容。然后验证其是否合法。<br/>
              * 验证的规则是:必须由字母,数字。下划线组成。并且长度是5到12位。
              * */
              function onclickFun(){
               
               
                  // 1 当我们要操作一个标签的时候,一定要先获取这个标签对象。
                  var usernameObj = document.getElementById("username");
                  console.log(usernameObj);// [object HTMLInputElement] 它就是dom对象
      
                  var usernameText = usernameObj.value;//获取文本框中的value值
      
                  // 如何 验证 字符串,符合某个规则 ,需要使用正则表达式技术
                  var patt = /^\w{5,12}$/;
                  /*
                  *  test()方法用于测试某个字符串,是不是匹配我的规则 ,
                  *  匹配就返回true。不匹配就返回false.
                  * */
      
                  var usernameSpanObj = document.getElementById("usernameSpan");
                  // innerHTML 表示起始标签和结束标签中的内容
                  // innerHTML 这个属性可读,可写
                  usernameSpanObj.innerHTML = "国哥真可爱!";
      
                  if(patt.test(usernameText)){
               
               
                      // alert("用户名合法!");
                      // usernameSpanObj.innerHTML = "用户名合法!";
                      usernameSpanObj.innerHTML = "<img src=\"right.png\" height=\"18\" width=\"18\"/>";
                  }else{
               
               
                      // alert("用户名不合法");
                      // usernameSpanObj.innerHTML = "用户名不合法!";
                      usernameSpanObj.innerHTML = "<img src=\"wrong.png\" height=\"18\" width=\"18\"/>";
                  }
              }
      
          </script>
      </head>
      <body>
          用户名:<input type="text" id="username"/>
          <span id="usernameSpan" style="color:red"></span>
          <button onclick="onclickFun()">校验</button>
      </body>
      </html>
      
    2. getElementsByName方法示例代码:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript">
              //全选
              function checkAll(){
               
               
                  // document.getElementsByName();是根据 指定的name属性查询返回多个标签对象集合
                  // 这个集合的操作跟数组 一样
                  // 集合中每个元素都是dom对象
                  // 这个集合中的元素顺序是他们在html页面中从上到下的顺序
                  var hobbies = document.getElementsByName("hobby");
                  // alert(hobbies);//[object NodeList]
                  // checked表示复选框的选中状态。如果选中是true,不选中是false
                  // checked 这个属性可读,可写
                  for(var i = 0;i<hobbies.length;i++){
               
               
                      hobbies[i].checked = true;
                  }
              }
              //全不选
              function checkNo(){
               
               
                  var hobbies = document.getElementsByName("hobby");
                  for(var i = 0;i<hobbies.length;i++){
               
               
                      hobbies[i].checked = false;
                  }
              }
              //反选
              function checkReverse(){
               
               
                  var hobbies = document.getElementsByName("hobby");
                  for(var i = 0;i<hobbies.length;i++){
               
               
                      hobbies[i].checked = !hobbies[i].checked;
                      // if(hobbies[i].checked){
               
               
                      //     hobbies[i].checked = false;
                      // }else{
               
               
                      //     hobbies[i].checked = true;
                      // }
      
                  }
              }
          </script>
      </head>
      <body>
          兴趣爱好:
          <input type="checkbox" name="hobby" value="cpp" checked="checked">C++
          <input type="checkbox" name="hobby" value="java">Java
          <input type="checkbox" name="hobby" value="js">JavaScript
          <br/>
          <button onclick="checkAll()">全选</button>
          <button onclick="checkNo()">全不选</button>
          <button onclick="checkReverse()">反选</button>
      
      </body>
      </html>
      
    3. getElementsByTagName方法示例代码:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
          <script type="text/javascript">
              //全选
              function checkAll(){
               
               
                  // document.getElementsByTagName("input");
                  // 是按照指定标签名来进行查询并返回集合
                  // 这个集合的操作跟数组 一样
                  // 集合中都是dom对象
                  // 集合中元素顺序 是他们在html页面中从上到下的顺序。
                  var inputs = document.getElementsByTagName("input");
                  for(var i = 0;i<inputs.length;i++){
               
               
                      inputs[i].checked = true;
                  }
              }
          </script>
      </head>
      <body>
          兴趣爱好:
          <input type="checkbox" value="cpp" checked="checked">C++
          <input type="checkbox" value="java">Java
          <input type="checkbox" value="js">JavaScript
          <br/>
          <button onclick="checkAll()">全选</button>
      </body>
      </html>
      
    4. createElement方法示例代码:

      <!DOCTYPE html>
      <html lang="en">
      <head>
          <meta charset="UTF-8">
          <title>Title</title>
      
          <script type="text/javascript">
              // 现在需要我们使用js代码来创建html标签,并显示在页面上
              // 标签的内容就是:<div>国哥,我爱你</div>
              //方法一:
              window.onload = function(){
               
               
                  var divObj = document.createElement("div");
                  divObj.innerHTML = "国哥,我爱你";
                  var bodyObj = document.getElementById("bodyy");
                  // bodyObj.appendChild(divObj);
                  //或
                  document.body.appendChild(divObj);
              }
              //方法二:
              window.onload = function(){
               
               
                  var divObj = document.createElement("div");
                  var textNodeObj = document.createTextNode("国哥,我爱你");
                  divObj.appendChild(textNodeObj);
                  document.body.appendChild(divObj);
              }
      
          </script>
      </head>
      <body id="bodyy">
      
      </body>
      </html>
      
  2. 获取元素节点的子节点

    通过具体的元素节点调用

    1. getElementsByTagName():方法,返回当前节点的指定标签名后代节点
    2. childNodes:属性,表示当前节点的所有子节点
    3. firstChild:属性,表示当前节点的第一个子节点
    4. lastChild:属性,表示当前节点的最后一个子节点
  3. 获取父节点和兄弟节点

    通过具体的节点调用

    1. parentNode:属性,表示当前节点的父节点
    2. previousSibling:属性,表示当前节点的前一个兄弟节点
    3. nextSibling:属性,表示当前节点的后一个兄弟节点
  4. 元素节点的属性

    1. 获取,元素对象.属性名。例:element.value、element.id、element.className
    2. 设置,元素对象.属性名=新的值。例:element.value = “hello”、element.id = “id01”、element.className = “newClass”
  5. 其他属性

    1. nodeValue:文本节点可以通过nodeValue属性获取和设置 文本节点的内容
    2. innerHTML:元素节点通过该属性获取和设置标签内部的 html代码

代码实例:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>dom查询</title>
<link rel="stylesheet" type="text/css" href="style/css.css" />
<script type="text/javascript">
	window.onload = function(){
     
     
		//1.查找#bj节点
		document.getElementById("btn01").onclick = function(){
     
     
			var bjObj = document.getElementById("bj");
			alert(bjObj.innerHTML);
		}
		//2.查找所有li节点
		var btn02Ele = document.getElementById("btn02");
		btn02Ele.onclick = function(){
     
     
			var liObjs = document.getElementsByTagName("li");
			alert(liObjs.length);
		};
		//3.查找name=gender的所有节点
		var btn03Ele = document.getElementById("btn03");
		btn03Ele.onclick = function(){
     
     
			var genders = document.getElementsByName("gender");
			alert(genders.length);
		};
		//4.查找#city下所有li节点
		var btn04Ele = document.getElementById("btn04");
		btn04Ele.onclick = function(){
     
     
			//1 获取id为city的节点
			var city = document.getElementById("city");
			//2 通过city获取所有子节点
			var citylis = city.getElementsByTagName("li");
			alert(citylis.length);
		};
		//5.返回#city的所有子节点
		var btn05Ele = document.getElementById("btn05");
		btn05Ele.onclick = function(){
     
     
			//1 获取id为city的节点
			var city = document.getElementById("city");
			//2 通过city获取所有子节点
			alert(city.childNodes.length);//两对标签之间的字符串也算一个节点
		};
		//6.返回#phone的第一个子节点
		var btn06Ele = document.getElementById("btn06");
		btn06Ele.onclick = function(){
     
     
			// 查询id为phone的节点
			alert(document.getElementById("phone").firstChild.innerHTML);
		};
		//7.返回#bj的父节点
		var btn07Ele = document.getElementById("btn07");
		btn07Ele.onclick = function(){
     
     
			//1 查询id为bj的节点
			//2 bj节点获取父节点
			alert(document.getElementById("bj").parentNode.innerHTML);
		};
		//8.返回#android的前一个兄弟节点
		var btn08Ele = document.getElementById("btn08");
		btn08Ele.onclick = function(){
     
     
			alert(document.getElementById("android").previousSibling.innerHTML);
		};
		//9.读取#username的value属性值
		var btn09Ele = document.getElementById("btn09");
		btn09Ele.onclick = function(){
     
     
			alert(document.getElementById("username").value);
		};
		//10.设置#username的value属性值
		var btn10Ele = document.getElementById("btn10");
		btn10Ele.onclick = function(){
     
     
			document.getElementById("username").value = "系统默认值";
		};
		//11.返回#city的文本值
		var btn11Ele = document.getElementById("btn11");
		btn11Ele.onclick = function(){
     
     
			alert(document.getElementById("city").innerHTML);//包括标签
			alert(document.getElementById("city").innerText);//不包含标签,只包含内容
		};
	};
</script>
</head>
<body>
<div id="total">
	<div class="inner">
		<p>
			你喜欢哪个城市?
		</p>

		<ul id="city">
			<li id="bj">北京</li>
			<li>上海</li>
			<li>东京</li>
			<li>首尔</li>
		</ul>

		<br>
		<br>

		<p>
			你喜欢哪款单机游戏?
		</p>

		<ul id="game">
			<li id="rl">红警</li>
			<li>实况</li>
			<li>极品飞车</li>
			<li>魔兽</li>
		</ul>

		<br />
		<br />

		<p>
			你手机的操作系统是?
		</p>

		<ul id="phone"><li>IOS</li><li id="android">Android</li><li>Windows Phone</li></ul>
	</div>

	<div class="inner">
		gender:
		<input type="radio" name="gender" value="male"/>
		Male
		<input type="radio" name="gender" value="female"/>
		Female
		<br>
		<br>
		name:
		<input type="text" name="name" id="username" value="abcde"/>
	</div>
</div>
<div id="btnList">
	<div><button id="btn01">查找#bj节点</button></div>
	<div><button id="btn02">查找所有li节点</button></div>
	<div><button id="btn03">查找name=gender的所有节点</button></div>
	<div><button id="btn04">查找#city下所有li节点</button></div>
	<div><button id="btn05">返回#city的所有子节点</button></div>
	<div><button id="btn06">返回#phone的第一个子节点</button></div>
	<div><button id="btn07">返回#bj的父节点</button></div>
	<div><button id="btn08">返回#android的前一个兄弟节点</button></div>
	<div><button id="btn09">返回#username的value属性值</button></div>
	<div><button id="btn10">设置#username的value属性值</button></div>
	<div><button id="btn11">返回#city的文本值</button></div>
</div>
</body>
</html>

十一、BOM待补

猜你喜欢

转载自blog.csdn.net/weixin_44630656/article/details/114025184