• Java Web(1)-JavaScript


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

    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. 第二种方式

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

    <!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 全称是:NotaNumber。非数字。非数值

    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 i = 12; 
                // typeof() 是 JavaScript 语 言 提 供 的 一 个 函 数 。 
                // alert( typeof(i) ); // number
    			i = "abc"; 
                // 它 可 以 取 变 量 的 数 据 类 型 返 回 // alert( typeof(i) ); 
                // String
    			var a = 12; var b = "abc";
    		alert( a * b ); // NaN是 非 数 字 , 非 数 值 。
                
    </script>  
    </head> 
    <body>
    </body>
    </html>
    

    三、常见运算

    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>
    

    2. 逻辑运算

    • 且运算: &&、
    • 或运算:|| 、
    • 取反运算: !

    在 JavaScript 语言中,所有的变量,都可以做为一个 boolean 类型的变量去使用。
    0 、null、 undefined、””(空串) 都认为是 false;
    注意:

    • && 且运算。 有两种情况: 第一种:当表达式全为真的时候。返回最后一个表达式的值。 第二种:当表达式中,有一个为假的时候。返回第一个为假的表达式的值
    • || 或运算 第一种情况:当表达式全为假时,返回最后一个表达式的值 第二种情况:只要有一个表达式为真。就会把回第一个为真的表达式的值
    • 并且 && 与运算 和 ||或运算 有短路。 短路就是说,当这个&&或||运算有结果了之后 。后面的表达式不再执行 */
    <!DOCTYPE html> 
    <html lang="en"> 
        <head> 
            <meta charset="UTF-8"> 
            <title>Title</title> 
            <script type="text/javascript">
    		 var a = 0; 
                 if (a) { 
                	alert(" 零 为 真 "); 
               	 } else {
    				alert(" 零 为 假 "); 
                 }
    		var b = null; 
                 if (b) { 
                     alert("null为 真 ");
    			 } else { 
                 alert("null为 假 ");
    			 }
     		var c = undefined;  
                if (c) {  
                    alert("undefined为 真 ");
    			} else { 
                    alert("undefined为 假 ");
    			}
    		var d = ""; 
                if (d) {  
                    alert(" 空 串 为 真 "); 
                } else { 
                    alert(" 空 串 为 假 ");  
                }
    
    			var a = "abc"; 
                var b = true; 
                var d = false; 
                var c = null;
    			alert( a && b );//true 
                alert( b && a );//true
                alert( a && d ); // false 
                alert( a && c ); // null
                
    		   alert( d || c ); // null 
                alert( c|| d ); //false
    		   alert( a || c ); //abc 
                alert( b || c ); //true
    	</script> 
    </head> 
    	<body>
    	</body> 
    </html>
    

    四、数组

    1. 数组定义方式

    • var 数组名 =[]; //空数组
    • var 数组名 =[1,’abc’,true]; // 定义数组同时赋值元素
    <!DOCTYPE html> 
    <html lang="en"> 
        <head> 
            <meta charset="UTF-8"> 
            <title>Title</title> 
            <script type="text/javascript">
    		var arr = [true,1]; //定 义 数 组 
             // alert( arr.length ); // 2
    		arr[0] = 12; 
             // alert( arr[0] );//12 
            
    // javaScript语 言 中 的 数 组 , 只 要 我 们 通 过 数 组 下 标 赋 值 , 那 么 最 大 的 下 标 值 , 就 会 自 动 的 给 数 组 做 扩 容 操 作 。 
                arr[2] = "abc"; 
                alert(arr.length); //3
    			// alert(arr[1]);// undefined 
                // 数 组 的 遍 历 
                for (var i = 0; i < arr.length; i++){ 
                    alert(arr[i]); 
                }
    </script> </head>
    <body>
    </body> </html>
    
    

    五、函数

    函数的二种定义方式

    1. 第一种定义方式

    可以使用 function 关键字来定义函数

    function 函数名(形参列表){

    函数体

    }
    在 JavaScript 语言中,如何定义带有返回值的函数? 只需要在函数体内直接使用 return 语句返回值即可!

    <!DOCTYPE html> 
    <html lang="en"> 
        <head> 
            <meta charset="UTF-8"> 
            <title>Title</title> 
            <script type="text/javascript"> 
                // 定 义 一 个 无 参 函 数 
                function fun(){ 
                    alert("无参函数 fun()被调用了");
                } 
                // 函 数 调 用 === 才 会 执 行
                fun();
                
    		   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(100,50) );
    </script> </head> <body>
    </body> </html>
    

    2. 第二种定义方式

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

    函数体

    }

    <!DOCTYPE html> 
    <html lang="en"> 
        <head> 
            <meta charset="UTF-8"> 
            <title>Title</title> 
            <script type="text/javascript"> 
                var fun = function () { 
                    alert("无参函数");
                }  
                fun();
    
                var fun2 = function (a,b) { 
                    alert("有参函数 a=" + a + ",b=" + b); 
                } 
                fun2(1,2);
                
    		    var fun3 = function (num1,num2) { 
                    return num1 + num2; 
                }
    			alert( fun3(100,200) ); 
            </script>
    </head> 
        <body>
    	</body> 
    </html>
    
    

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

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

    3. 函数的 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"> 
                function fun(a) { 
                    alert( arguments.length );// 可 看 参 数 个 数
    			   alert( arguments[0] ); 
                    alert( arguments[1] ); 
                    alert( arguments[2] );
    			   alert("a = " + a);
                    
    			   for (var i = 0; i < arguments.length; i++){ 
                       alert( arguments[i] ); 
                   }
    			alert("无参函数 fun()");
    		} 
                fun(1,"ad",true);
    //需 求 : 要 求 编 写 一 个 函 数 。 用 于 计 算 所 有 参 数 相 加 的 和 并 返 回 
                function sum(num1,num2) { 
                    var result = 0; 
                    for (var i = 0; i < arguments.length; i++) {
                        if (typeof(arguments[i]) == "number") { 
                            result += arguments[i]; } 
                    	} 
                    	return result; 
                	}
    			alert( sum(1,2,3,4,"abc",5,6,7,8,9) );
    	</script> 
    </head> 
     <body>
    </body> 
    </html>
    

    六、JS 中的自定义对象

    1. Object 形式的自定义对象

    对象的定义:

    ​ var 变量名 =newObject(); // 对象实例(空对象)

    ​ 变量名.属性名 = 值; // 定义一个属性

    变量名.函数名 =function(){} // 定义一个函数
    

    对象的访问:

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
    
            var obj = new Object();
            obj.name = "马达";
            obj.age = 18;
            obj.fun = function () {
                alert("姓名:" + this.name + " , 年龄:" + this.age);
            }
    
            // 对象的访问
            // alert(obj.name);
            obj.fun();
        </script>
    </head>
    <body>
    </body>
    </html>
    

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

    对象的定义:

    ​ var 变量名 ={ // 空对象

    ​ 属性名:值, // 定义一个属性

    ​ 属性名:值, // 定义一个属性

    ​ 函数名:function(){} // 定义一个函数

    };

    对象的访问:

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

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            var obj = {
                name: "马达",
                age: 18,
                fun: function () {
                    alert("姓名:" + this.name + " , 年龄:" + this.age);
                }
            };
    
            // alert(obj.name);
            obj.fun();
        </script>
    </head>
    <body>
    </body>
    </html>
    

    七、JS中的事件

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

    1. 常用的事件

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

    事件的注册又分为静态注册和动态注册两种

    什么是事件的注册(绑定)?

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

    2. 静态注册事件

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

    3. 动态注册事件

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

    动态注册基本步骤:

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

    4. onload 加载完成事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            // function onLoadFun() {
            //     alert("静态注册onload事件");
            // }
    
            
            // 这个是动态注册,固定的写法
            window.onload = function () {
                alert("动态注册onload事件");
            }
    
    
        </script>
    </head>
    
    <!--静态注册onload事件,这个事件是在浏览器解析完页面之后自动触发的事件,里面自定义的函数
    <body onload="onLoadFun()">
    
    -->
    
    </body>
    </html>
    

    5. onclick 单击事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            // function onclickFun() {
            //     alert("静态注册onclick事件");
            // }
    
            // 动态注册
            window.onload = function () {
                // 1. 获取标签对象
                // document是JS语言提供的一个对象
                // 通过属性的id来获取标签对象
                var b = document.getElementById("b01");
                // alert(b);
                
                // 2. 通过标签对象.事件名 =  function (){}
                b.onclick = function () {
                    alert("动态注册onclick事件");
                }
            }
            
        </script>
    </head>
    <body>
    
    <!-- 静态注册onclick-->
        <button onclick="onclickFun();">按钮1</button>
        <button id="b01">按钮2</button>
    </body>
    </html>
    

    6. 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("静态注册失去焦点事件");
            }
    
    
            // 动态注册
            window.onload = function () {
                //1 获 取 标 签 对 象
                var passwordObj = document.getElementById("password");
                // alert(passwordObj);
                // 2 通 过 标 签 对 象 . 事 件 名 = function(){};
                passwordObj.onblur = function () {
                    console.log("动态注册失去焦点事件");
                }
            }
        </script>
    </head>
    <body>
        用户名:<input type="text" onblur="onblurFun();"><br/>
        密码:<input id="password" type="text"><br/>
    </body>
    </html>
    

    7. onchange内容发生改变事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function onchangeFun() {
                alert("电影改变");
            }
    
            window.onload = function () {
                var sObj = document.getElementById("s01");
                sObj.onchange = function () {
                    alert("书籍已经改变");
                }
            }
    
        </script>
    </head>
    <body>
    
        <!--静态注册事件-->
        请选择你喜欢看的电影
        <select onchange="onchangeFun();">
            <option>--电影--</option>
            <option>盗墓笔记</option>
            <option>黑客帝国</option>
            <option>千与千寻</option>
        </select>
    
        <br>
        请选择你喜欢看的书籍
        <select id="s01">
            <option>--书籍--</option>
            <option>平凡的世界</option>
            <option>小王子</option>
            <option>解忧杂货店</option>
        </select>
    
    </body>
    </html>
    

    8. onsubmit 表单提交事件

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            // 静态注册表单提交事务
            function onsubmitFun() {
                alert("提交不合法");
    
                return false;
            }
    
            // 动态注册表单提交事务
            window.onload = function () {
                var formObj = document.getElementById("form01");
                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 全称是 DocumentObjectModel 文档对象模型
    就是把文档中的标签,属性,文本,转换成为对象来管理。 那么 它们是如何实现把标签,属性,文本转换成为对象来管理呢

    1. Document 对象

    Document 对象的理解:

    • Document 它管理了所有的 HTML 文档内容
    • document 它是一种树结构的文档,有层级关系
    • 它让我们把所有的标签 都 对象化
    • 我们可以通过 document 访问所有的标签对象

    2. Document 对象中的方法介绍

    • document.getElementById(elementId) 通过标签的 id 属性查找标签 dom 对象,elementId 是标签的 id 属性值
    • document.getElementsByName(elementName) 通过标签的 name 属性查找标签 dom 对象,elementName 标签的 name 属性值
    • document.getElementsByTagName(tagname) 通过标签名查找标签 dom 对象。tagname 是标签名
    • document.createElement( tagName) 方法,通过给定的标签名,创建一个标签对象。tagName 是要创建的标签名

    注意:

    document 对象的三个查询方法,如果有 id 属性,

    优先使用 getElementById 方法来进行查询 如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询 如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName
    以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象

    3. getElementById 方法

    需 求 : 当用户点击了校验按 钮 , 要 获 取 输 出 框 中 的 内 容 。 然 后 验 证 其 是 否 合 法 。

    验 证 的 规 则 是 : 必 须 由 字 母、数 字、下 划 线 组 成 。 并 且 长 度 是 5 到 12 位

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            
            function onClick() {
                // 1 当我们要 操 作 一 个 标 签 的 时 候 , 一 定 要 先 获 取 这 个 标 签 对 象 。
                var usernameObj = document.getElementById("username");
                // [object HTMLInputElement] 就是dom对象
                var usernameText = usernameObj.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 = "用户名合法!";
                }else{
                    alert("用户名不合法");
                    usernameSpanObj.innerHTML = "用户名不合法!";
                }
            }
        </script>
    </head>
    <body>
        用户名:<input type="text" id="username" value="md">
        <span id="usernameSpan" style="color: red;">
            
        </span>
    
        <button onclick="onClick()">校验</button>
    </body>
    </html>
    

    4. getElementsByName 方法

    让 所 有 复 选 框 都 选 中

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <script type="text/javascript">
    
            function checkAll() {
                // document.getElementsByName("hobby"),是根据指定的name来查询返回多个标签对象集合
                // 这个集合的操作和数组一样,集合中每个元素都是dom对象
                // 这个集合中元素的顺序是按照html页面的上下顺序
                var hobbies = document.getElementsByName("hobby");
                // checked表示复选框的选中状态,选中是true
                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;
                }
            }
        </script>
    </head>
    <body>
    
        兴趣爱好:
        <input type="checkbox" name="hobby" value="c" checked="checked"> C
        <input type="checkbox" name="hobby" value="java"> Java
        <input type="checkbox" name="hobby" value="python"> Python
    
        <br>
    
        <button onclick="checkAll()">全选</button>
        <button onclick="checkNo()">全部选</button>
        <button onclick="checkReverse()">反选</button>
    
    </body>
    </html>
    

    5. 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 hobbies = document.getElementsByTagName("input");
    
                for (var i = 0; i < hobbies.length; i++){
                    hobbies[i].checked = true;
                }
            }
    
    
        </script>
    </head>
    <body>
    
        兴趣爱好:
        <input type="checkbox" name="hobby" value="c" checked="checked"> C
        <input type="checkbox" name="hobby" value="java"> Java
        <input type="checkbox" name="hobby" value="python"> Python
    
        <br>
    
        <button onclick="checkAll()">全选</button>
    
    
    </body>
    </html>
    

    6. createElement 方法

    使用js代码来创建html标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
    
            window.onload = function () {
                // 在内存中有<div> </div>
                var divObj = document.createElement("div");
    
                // 有一个文本节点对象 你好,山丘
                var textNodeObj = document.createTextNode("你好,山丘");
    
                // <div>你好,山丘 </div>
                divObj.appendChild(textNodeObj);
    
                // 添加子元素,在body里
                document.body.appendChild(divObj);
            }
    
        </script>
    </head>
    <body>
    
    </body>
    </html>
    

    7. 节点常用的属性和方法

    方法:

    • 通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点
    • appendChild(ChildNode) 方法,可以添加一个子节点,ChildNode 是要添加的孩子节点

    属性:

    • childNodes 属性,获取当前节点的所有子节点
    • firstChild 属性,获取当前节点的第一个子节点 ,会匹配换行和空格信息 ,使用firstElementChild 则不会匹配换行和空格信息,其他的类似
    • lastChild 属性,获取当前节点的最后一个子节点
    • parentNode 属性,获取当前节点的父节点
    • nextSibling 属性,获取当前节点的下一个节点
    • previousSibling 属性,获取当前节点的上一个节点,previousElementSibling这个不包括换行和空格
    • className 用于获取或设置标签的 class 属性值
    • innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
    • innerText 属性,表示获取/设置起始标签和结束标签中的文本

    8. DOM练习

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    
        <script type="text/javascript">
    
            window.onload = function () {
                // 1. 查找#bj节点
                document.getElementById("b01").onclick = function () {
                    var bjObj = document.getElementById("bj");
                    alert(bjObj.innerHTML);
                };
    
                // 2. 查找所有 li 节点
                var but02Ele = document.getElementById("b02");
                but02Ele.onclick = function () {
                    var lis = document.getElementsByTagName("li");
                    alert(lis.length);
                };
                // 3. 查找 name=gender 的所有节点
                var but03Ele = document.getElementById("b03");
                but03Ele.onclick = function () {
                    var genders = document.getElementsByName("gender");
                    alert(genders.length);
                };
    
    
    
                // 4. 查找#city 下所有 li 节点
                var but04Ele = document.getElementById("b04");
                but04Ele.onclick = function () {
                   var lis = document.getElementById("city").getElementsByTagName("li");
                   alert(lis.length);
                };
    
                // 5. 返回#city 的所有子节点
                var but05Ele = document.getElementById("b05");
                but05Ele.onclick = function () {
                   var obj = document.getElementById("city").childNodes;
                   console.log(obj.length);
                   for (var i = 0; i < obj.length; i++){
                       console.log(obj[i]);
                   }
                };
    
                // 6. 返回#phone 的第一个子节点
                var but06Ele = document.getElementById("b06");
                but06Ele.onclick = function () {
                    var objphone = document.getElementById("phone").firstElementChild;
                    alert(objphone.innerHTML);
    
                };
    
                // 7. 返回#bj 的父节点
                var but07Ele = document.getElementById("b07");
                but07Ele.onclick = function () {
                    var objbj = document.getElementById("bj").parentNode;
                    alert(objbj.innerHTML);
                };
    
                // 8. 返回#ML 的前一个兄弟节点
                var but08Ele = document.getElementById("b08");
                but08Ele.onclick = function () {
                    alert(document.getElementById("ML").previousElementSibling.innerHTML);
                };
    
                // 9. 返回#username 的 value 属性值
                var but09Ele = document.getElementById("b09");
                but09Ele.onclick = function () {
                    alert(document.getElementById("username").value);
                };
    
                // 10. 设置#username 的 value 属性值
                var but10Ele = document.getElementById("b10");
                but10Ele.onclick = function () {
                    document.getElementById("username").value = "山丘";
                };
    
                // 11. 返回#city 的文本值
                var but11Ele = document.getElementById("b11");
                but11Ele.onclick = function () {
                    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>
    
                <p>
                    你喜欢那款游戏?
                </p>
    
                <ul id="game">
                    <li id="wz">王者荣耀</li>
                    <li>飞车</li>
                    <li>联盟</li>
                    <li>DNF</li>
                </ul>
    
                <br>
    
                <p>
                    你的手机是什么品牌?
                </p>
    
                <ul id="phone">
                    <li>华为</li>
                    <li id="ML">小米</li>
                    <li>oppo</li>
                    <li>一加</li>
                </ul>
            </div>
    
    
            <div class="inner">
                gender:
                <input type="radio" name="gender" value="male">
                Male
                <input type="radio" name="gender" value="female">
                Female
    
                <br>
                name:
                <input type="text" name="name" id="username" value="md">
            </div>
        </div>
    
        <div id="btuList">
            <div><button id="b01">查找#bj节点</button></div>
            <div><button id="b02">查找所有 li 节点</button></div>
            <div><button id="b03">查找 name=gender 的所有节点</button></div>
            <div><button id="b04">查找#city 下所有 li 节点</button></div>
            <div><button id="b05">返回#city 的所有子节点</button></div>
            <div><button id="b06">返回#phone 的第一个子节点</button></div>
            <div><button id="b07">返回#bj 的父节点</button></div>
            <div><button id="b08">返回#android 的前一个兄弟节点</button></div>
            <div><button id="b09">返回#username 的 value 属性值</button></div>
            <div><button id="b10">设置#username 的 value 属性值</button></div>
            <div><button id="b11">返回#city 的文本值</button></div>
        </div>
    </body>
    </html>
    
    作者:山丘!

    -------------------------------------------

    你闻讯而来,我大喜过望,我在这等你,你又在哪呢?喜欢的话加一个“关注”呗!

    如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!

  • 相关阅读:
    点到圆的切点
    两圆交点
    问n条平行于x,y的直线交点个数
    凸包与直线的关系
    Kuangbin的计算几何模板
    最大空凸包
    树链剖分模板题
    笔记1
    面试题2
    python utf-8 转码问题
  • 原文地址:https://www.cnblogs.com/mengd/p/13363427.html
Copyright © 2020-2023  润新知