Advertisement

JavaScript笔记

阅读量:

javascript 语言入门

1.JavaScript 介绍

复制代码
    JavaScript语言诞生主要是完成页面的数据验证。因此他运行在客户端,需要运行浏览器来解析执行JavaScript代码。
    JS是Netscape 网景公司的产品,最早取名为Livescript;为了吸引 更多的Java程序员更名为JavaScript。

JS是弱类型,Java是强类型

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

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

复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--
        使用script 引入外部js文件来执行
            arc属性 专门用来引入js文件路径(可以是相对路径,也可以是绝对路径)
    
        script标签可以用来定义js代码,也可以用来引入js文件,
        但是,两个功能二选一使用,不能使用两个功能。
    
    -->
    <script type="text/javascript" src="1.js">
    
    </script>
    <script type="text/javascript">
        alert("hello js代码");
    </script>
    </head>
    <body>
    
    </body>
    </html>

3.变量

复制代码
    JavaScript的变量类型
    	数值类型:					number
    	字符串类型:			 	 	string
    	对象类型:					object
    	布尔类型:					boolean
    	函数类型:					funtion
    
    JavaScript中特殊的值
    	underfine					未定义,所有js变量为赋值于初始值的时候,默认值都是underfine
    	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
    
        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>

4.关系比较运算

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

5.数组(重点)

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

6.函数(重点)

6.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();
    
        function fun2(a ,b){
            alert("有参函数fun2()被调用了 a="+a+" b="+b);
        }
        // fun2(1, "ABC");
    
    
        //定义有返回值的函数
        function fun3(num1, num2){
            var sum = num1 + num2;
            return sum;
        }
    
        alert(fun3(10, 12));
    
    </script>
    </head>
    <body>
    
    </body>
    </html>
第二种定义方式
复制代码
    使用格式如下:
    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(10, 20));
    </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("无参函数");
        }
    
        function fun(a, b) {
            alert("有参函数fun(a,b)");
        }
    
        fun();//有参函数fun(a,b)
    </script>
    </head>
    <body>
    
    </body>
    </html>

6.2 function函数内的argument隐形参数

复制代码
    就是在 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]);
    
            for(var i=0; i < arguments.length; i++){
                alert(arguments[i]);
            }
            
        }
    
        // fun(1,"ad",true);
    
        //需求:编写一个函数,用于计算所有参数相加的和并返回
        function sum(num1, num2){
            var ret = 0;
            for(var i = 0; i < arguments.length; i++){
                ret += arguments[i];
            }
            return ret;
        }
        alert(sum(1,2,3,4,5,6,7,8,9));
    </script>
    </head>
    <body>
    
    </body>
    </html>

7. 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.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( typeof(obj) );//object
    
       alert( obj.fun());
    </script>
    </head>
    <body>
    
    </body>
    </html>

8.js中的事件

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

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

事件的注册又分为静态注册和动态注册两种
什么是时间注册(绑定)?
其实就是告诉浏览器,当事件响应后要执行操作代码,叫事件的注册或绑定。

静态注册事件:通过html标签的事件属性直接赋予事件响应后的代码,这种方式称为静态注册事件。

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

复制代码
    动态注册的基本步骤:
    	1.获取标签对象
    	2.标签对象.事件名 = function(){}
8.1 onload 加载完事件
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //onload 事件的方法
        function onloadFun() {
            alert('静态注册onload事件,所有代码');
        }
    
    
        //onload 事件动态注册,是固定写法
        window.onload = function () {
            alert("动态注册的onload事件");
        }
    </script>
    </head>
    <!--静态注册onload事件
        onload事件是浏览器解析完页面后就会自动触发的事件
        <body onload="onloadFun()">
    -->
    <body>
    
    </body>
    </html>
8.2 onclick 单击事件
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
    
        function onclickFun() {
            alert("静态注册onclick事件");
        }
    
        //动态注册onclick事件
        window.onclick = function () {
            // 1 获取标签对象
                    //document 是JavaScript语言提供的一个对象(文档)
                        //getELementById 通过id属性获取标签对象
            var btnObj = document.getElementById("002");
           // alert(btnObj);
    
            //2 通过标签对象.事件名 = function(){}
    
            btnObj.onclick = function () {
                alert("动态注册的onclick事件");
            }
        }
    </script>
    </head>
    <body>
    <!--静态注册onclick事件-->
    <button onclick="onclickFun()">按钮1</button>
    <button id="002">按钮2</button>
    </body>
    </html>
8.3 onblur失去焦点事件
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //静态注册失去焦点事件
        function  onblurFun() {
            //cinsole是控制台对象,由JavaScript语言支持,专门用来向浏览器的控制器打印输出,用于测试使用
            //log() 是打印的方法
            console.log("静态注册失去焦点事件");
        }
    
    
        //动态注册onblur事件
        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 type="password" id="password"><br/>
    
    </body>
    </html>
8.4 onchange 内容发生改变事件
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        function onchangeFun() {
            alert("女神已改变");
        }
    
        window.onload = function () {
            //1.获取标签对象
            var selectObj = document.getElementById("01");
            // alert(selectObj);//[object HTMLSelectElement]
            //2.通过标签对象.事件名 = function()
            selectObj.onchange = function () {
                alert("男神已改变");
            }
    
        }
    </script>
    </head>
    <body>
    请选择你心中的女神:
    <!--静态注册onchange事件-->
    <select onchange="onchangeFun()">
        <option>--女神--</option>
        <option>--女神1--</option>
        <option>--女神2--</option>
        <option>--女神3--</option>
    </select>
    <br/>
    请选择你心中的男神:
    <!--静态注册onchange事件-->
    <select id="01">
        <option>--男神--</option>
        <option>--男神1--</option>
        <option>--男神2--</option>
        <option>--男神3--</option>
    </select>
    </body>
    </html>
8.5 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 () {
            //1.获取标签对象
            var formObj = document.getElementById("form01");
    
            //2.通过标签对象.事件名 = function(){}
            formObj.onsubmit = function () {
                //要验证所有的表单是否合法,如果有一个不合法就阻止表单提交
                alert("动态注册表单提交事件----发现不合法");
                return false;
            }
    
        }
    </script>
    </head>
    <body>
    <form action="http://localhost:8080" method="get" onsubmit="return onsubmitFun();">
        <input type="submit" value="静态注册"/>
    </form>
    
    <form action="http://localhost:8080" method="get" id="form01">
        <input type="submit" value="动态注册"/>
    </form>
    </body>
    </html>

9.DOM模型

复制代码
    DOM 全称是 Document Object Model 文档对象	模型
    大白话就是把文档中的标签,属性,文本,转换成对象来管理。
9.1 Document对象(重点)
Domcument 文档树内存结构
复制代码
    Document 对象的理解:
    	第一点:Document 它管理了所有的 HTML 文档内容。
    	第二点:Document 他是一种树结构文档。有层级关系。
    	第三点:它让我们把所有的标签都对象化。
    	第四点:我们可以通过document访问所有的标签对象
    
    
    对象化:
    	1.java 对象化
    	举例: 有一个人有年龄:18 岁,性别:女,名字:张某某 我们要把这个人的信息对象化怎么办!
    
    class Person{
    	private int age;
    	private String sex;
    	private 	String name;
    }
    
    
    2.html 对象化
    class Dom{
    	private String id;						//id属性
    	private String tagName;			//表示标签名
    	private Dom parentNode;			//父亲
    	private List<Dom>children;		//孩子节点
    	private String innerHTML;		//起始标签和结束标签中间的内容
    
    }
9.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 
    
    以上三个方法,一定要在页面加载完成之后执行,才能查询到标签对象。
9.2.1 验证用户名是否有效
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        // 需求:当用户点击了校验按钮,要获取框中内容,然后验证其是否合法。
        //  验证的规则是:必须是由字母,数字,下划线构成。并且长度是5到12位。
        
        function onclickFun() {
            //1.当我们要操作一个标签的时候,一定要先获取这个标签对象
            var usenameObj = document.getElementById("usename");
            // alert(usenameObj);//[object HTMLInputElement] 他就是Dom对象
            var usenameText = usenameObj.value;
            //如何判断字符串符合某个规则, 需要正则表达式技术
            var patt = /^\w{5,12}$/;
            //test()方法用于测试某个字符串,是不是匹配规则。
            //匹配就返回true,不匹配就返回false
            
            if (patt.test(usenameText)){
                alert("用户名合法!");
            } else{
                alert("用户名不合法!");
            }
    
    
        }
    
    </script>
    </head>
    <body>
    用户名:<input type="text" id="usename" value="必须是由字母,数字,下划线构成。并且长度是5到12位"/>
    <button onclick="onclickFun()">校验</button>
    </body>
    </html>
9.2.2 正则表达式
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //表示字符串中,是否包含字母e
        // var patt = new RegExp("e");
        // var patt = /e/; //也是正则表达式对象
    
        //表示要求字符串中,是否包含字母 a或b或c
        // var patt = /abc/;
    
        //表示要求字符串是否包含小写字母
        // var patt = /[a-z]/;
    
        //表示要求字符串是否包含大写字母
        // var patt = /[A-Z]/;
    
        //表示要求字符串是否包含数字
        // var patt = /[0-9]/;
    
        //表示要求字符串是否包含数字,字母,下划线
        // var patt = /\w/;
    
        //表示要求字符串是否包含至少一个a
        // var patt = /a+/;
    
        //表示要求字符串是否 包含 零个 或 多个a
        // var patt = /a*/;
    
        //表示要求字符串是否 包含 零个 或 一个a
        // var patt = /a?/;
    
        //表示要求 字符串是否 包含 连续3个a
        // var patt = /a{3}/;
    
        //表示要求 字符串是否 包含 至少连续3个a 最多连续5个a
        // var patt = /a{3,5}/;
    
    
        //表示要求 字符串是否 包含 至少连续3个a
        // var patt = /a{3,}/;
    
        //表示要求 字符串是否 以a结尾
        // var patt = /a$/;
    
        //表示要求 字符串是否 以a打头
        // var patt = /^a/;
    
        //表示要求 字符串是否 包含 至少连续3个a 最多连续5个a
        // var patt = /a{3,5}/;
    
        //表示要求 字符串 是否从头到尾必须完全匹配
        var patt = /^a{3,5}$/;
    
        var str = "aa.";
    
        alert(patt.test(str));
    </script>
    </head>
    <body>
    
    </body>
    </html>
9.2.3 getElementById方法
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        // 需求:当用户点击了校验按钮,要获取框中内容,然后验证其是否合法。
        //  验证的规则是:必须是由字母,数字,下划线构成。并且长度是5到12位。
        
        function onclickFun() {
            //1.当我们要操作一个标签的时候,一定要先获取这个标签对象
            var usenameObj = document.getElementById("usename");
            // alert(usenameObj);//[object HTMLInputElement] 他就是Dom对象
            var usenameText = usenameObj.value;
            //如何判断字符串符合某个规则, 需要正则表达式技术
            var patt = /^\w{5,12}$/;
            //test()方法用于测试某个字符串,是不是匹配规则。
            //匹配就返回true,不匹配就返回false
    
            var usenameSpanObj = document.getElementById("usenamespan");
    
            //innerHTML 表示起始标签和结束标签中的内容
            //innerHTML 这个属性可读,可写
            // usenameSpanObj.innerHTML = "你真可爱!";
    
            if (patt.test(usenameText)){
               // alert("用户名合法!");
               //  usenameSpanObj.style="color: green";
               //  usenameSpanObj.innerHTML = "用户名合法!";
                usenameSpanObj.innerHTML = " <img src=\"right.png\" width=\"18\" height=\"18\">";
            } else{
             //  alert("用户名不合法!");
              //   usenameSpanObj.innerHTML = "用户名不合法!";
                usenameSpanObj.innerHTML = " <img src=\"wrong.png\" width=\"18\" height=\"18\">";
    
            }
    
    
        }
    
    </script>
    </head>
    <body>
    用户名:<input type="text" id="usename" value="请输入"/>
    <span id="usenamespan" style="color: red">
    
    </span>
    <button onclick="onclickFun()">校验</button>
    </body>
    </html>
9.2.4 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]
            // alert(hobbies.length);//3
            // alert(hobbies[0]);//[object HTMLInputElement]
            // alert(hobbies[0].value);//cpp
            // checked 表示复选框的选中状态,选中是true ,不选中是flase
            // checked 这个属性可读可写
            // alert(hobbies[0].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="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>
9.2.5 getElementsByTagName 方法
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        //全选
        function checkAll(){
        //    document.getElementsByTagName("");
        //    是按照指定标签名来进行查询并返回集合
        //    这个集合操作和数组一样,集合中都是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>
9.2.5 createElement 方法
复制代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript">
        
        window.onload = function () {
            //现在需要我们使用js代码来创建html标签,并显示在页面上
            //标签内容是: <div>我爱你</div>
            var divObj = document.createElement("div");//现在在内存中  <div><div/>  还没有内容
            // alert(divObj);//[object HTMLDivElement]
    
            //方法一
           // divObj.innerHTML = "我爱你";//<div>我爱你<div/>,但是还只是在内存中,没有显示出来
            //方法二
            var textNodeObj = document.createTextNode("I Love You");//有一个文本对象 I Love You
            divObj.appendChild(textNodeObj);//<div>I Love You
            //添加子元素
            document.body.appendChild(divObj);
        }
    
    </script>
    </head>
    <body>
    
    </body>
    </html>
9.3 节点常用属性和方法
复制代码
    节点就是标签对象

方法:
getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点
appendChild( ChildNode ) 方法,可以添加一个子节点ChildNode 是要添加的孩子节点

属性:

复制代码
    childNodes 属性,获取当前节点的所有子节点 
    firstChild 属性,获取当前节点的第一个子节点 
    lastChild 属性,获取当前节点的最后一个子节点 
    parentNode 属性,获取当前节点的父节点 
    nextSibling 属性,获取当前节点的下一个节点 
    previousSibling 属性,获取当前节点的上一个节点 
    className 用于获取或设置标签的 class 属性值 
    innerHTML 属性,表示获取/设置起始标签和结束标签中的内容
    innerText 属性,表示获取/设置起始标签和结束标签中的文本
复制代码
    <!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 lis = document.getElementsByTagName("li");
    			alert(lis.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的节点
    			//2.通过city节点,getElementsByTagName标签名查子节点
    			var lis = document.getElementById("city").getElementsByTagName("li");
    			alert(lis.length);
    		};
    		//5.返回#city的所有子节点
    		var btn05Ele = document.getElementById("btn05");
    		btn05Ele.onclick = function(){
    			//1.获取id为city的节点
    			//2.通过city获取所有的子节点
    			alert(document.getElementById("city").childNodes.length)
    		};
    		//6.返回#phone的第一个子节点
    		var btn06Ele = document.getElementById("btn06");
    		btn06Ele.onclick = function(){
    			//1.查找id为phone的节点
    
    			alert(document.getElementById("phone").firstChild.innerHTML );
    		};
    		//7.返回#bj的父节点
    		var btn07Ele = document.getElementById("btn07");
    		btn07Ele.onclick = function(){
    			//1.查询id为bj的节点
    			var bjObj = document.getElementById("bj");
    			//2.bj节点获取父节点
    			alert(bjObj.parentNode.innerHTML);
    
    		};
    		//8.返回#android的前一个兄弟节点
    		var btn08Ele = document.getElementById("btn08");
    		btn08Ele.onclick = function(){
    			//1.获取id为Android的节点
    			//2.通过Android节点获取前一个节点
    			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>

全部评论 (0)

还没有任何评论哟~