JavaScript

自动补齐快捷键:Ctrl+Alt+V

特点:

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

1、JS和HTML结合

1.1、方式一

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

格式:

 <script type="text/javascript">
 内容
 </script>

alert() 是 JavaScript 语言提供的一个警告框函数,它可以接收任意类型的参数,这个参数就是警告框的提示信息

hello

在这里插入图片描述

1.2、方式二

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

先创建单独的 js 文件
在这里插入图片描述

格式:

<script type="text/javascript" src="文件.js">
</script>

示例:

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

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

2、变量

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

JavaScript 的变量类型:

数值类型number
字符串类型string
对象类型object
布尔类型boolean
函数类型function

JavaScript 里特殊的值:

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

JS 中的定义变量格式:
var 变量名;
var 变量名 = 值;
这里的var并非一个实际的类型

typeof()是 JavaScript 语言提供的一个函数

<head>
    <meta charset="UTF-8">
    <title>Var</title>
    <script type="text/javascript">
        var a = 10;
        var b = "abc";
        alert(a*b);    //NaN
        alert(typeof (a*b));   //number
    </script>
</head>

在这里插入图片描述

2.1、关系(比较)运算

等于: == 是字面值的比较 ,弱性等于
全等于: === 不仅仅是字面值的比较,还比较两个变量的数据类型,强性比较

<head>
    <meta charset="UTF-8">
    <title>Var</title>
    <script type="text/javascript">
        var a = 10;
        var b = "10";
        alert(a==b);    //true
        alert(a===b);   //false
    </script>
</head>

2.2、逻辑运算

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

例如:

<head>
    <meta charset="UTF-8">
    <title>Var</title>
    <script type="text/javascript">
        var a = 10;
        var b = "";
        if(a){
            alert("数值");
        }else{
            alert("数值为假");
        }
        if(b){
            alert("空字符串");
        }else{
            alert("空字符串为假");
        }
    </script>
</head>

在这里插入图片描述
在这里插入图片描述
逻辑运算符:

且运算&&
或运算||
取反运算!

对于逻辑运算符,存在短路现象,所以返回的就是决定结果的那一项
(短路就是说,当这个&&或||运算有结果了之后,后面的表达式不再执行)

具体返回的结果如下,总结起来就是返回决定结果的那一项

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

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

    <script type="text/javascript">
        var a = "abc";
        var b = true;
        var c = null;
        var d = false;
        alert( b && a);    //abc
        alert( b && c && d);   //null
        alert( d || c);   //null
        alert( c || a);   //abc
    </script>

3、数组★★★

JS 中 数组的定义格式:

var 数组名 = []; // 空数组 
var 数组名 = [1 , ’abc’ , true]; // 定义数组同时赋值元素

会发现定义数组的时候并没有定义具体的数据类型,所以数组内可以存放各种类型的数据,类似于Java中的集合

并且,通过数组下标赋值,数组就会自动扩容

    <script type="text/javascript">
        var a = [];   //定义一个空数组
        alert(a.length);    //0
        // javaScript 语言中的数组,只要我们通过数组下标赋值,那么最大的下标值,就会自动的给数组做扩容操作
        a[3] = "abc";
        a[4] = 12;  //数组存放不同类型的数据
        alert(a.length);    //5
    </script>

自动扩容之后对于为赋值的部分就是默认值 undefined

alert(a[1])   //undefined

注意: 数组只有在使用索引赋值的情况下才会自动扩容
are[9]=12;
其他操作并不会扩容
alert(are[30]); //输出undefined

a[9] = 123;
alert(a.length);   //10
alert(a[30]);     //undefined
alert(a.length);    //10

数组的遍历,也是用 Java 中的 for i 循环
注意这里是var i = 0

for (var i = 0; i < a.length; i++) {
	alert(a[i]);
}

4、函数★★★

4.1、函数的定义

4.1.1、第一种

使用 function 关键字来定义函数

格式:

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

若是函数有返回值,直接在函数体使用return关键字即可

注意:
函数需要被调用,才可被使用

<script type="text/javascript">
    function fun1() {
        alert("无参的函数");
    }
    //调用,才会执行
    fun1();       //无参的函数
    
    function fun2(a,b) {   //因为定义变量是var,无法确定类型,所以这里使用形参也没有类型
        alert("有参函数"+a+","+b);
    }
    fun2(12,50);     //有参函数12,50
    
    //有返回值的函数
    function fun3(a,b) {
        var result = a+b;
        return result;
    }
    alert(fun3(22,33));      //55
</script>

4.1.2、第二种

格式:

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

与方式一类似

<script type="text/javascript">
    var f1 = function () {
        alert("无参函数");
    }
    f1();      //无参函数

    var f2 = function (a,b) {
        alert("有参函数"+a+","+b);
    }
    f2("abc",12);     //有参函数abc,12

    var f3 = function (s1,s2) {
        return s1+s2;
    }
    alert(f3(50,50));      //100
</script>

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

<script type="text/javascript">
    var f1 = function () {
        alert("无参函数");
    }
    var f1 = function (a,b) {
        alert("有参函数"+a+","+b);
    }
    f1();    //有参函数undefined,undefined
</script>

在这里插入图片描述

<script type="text/javascript">
    var f1 = function (a,b) {
        alert("有参函数"+a+","+b);
    }
    var f1 = function () {
        alert("无参函数");
    }
    //明明上面是无参函数,但是这里传入参数也不报错,这就涉及到函数的隐性参数arguments
    f1(1,12);    //无参函数

</script>

在这里插入图片描述
明明上面是无参函数,但是调用时传入参数也不报错,这就涉及到函数的隐性参数arguments

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

就是在 function 函数中不需要定义,但却可以直接用来获取所有参数的变量。我们管它叫隐形参数

隐形参数类似 java 的可变长参数public void fun( Object ... args )

可变长参数其他是一个数组

JS 中的隐形参数也跟 java 的可变长参数一样,操作类似数组

<script type="text/javascript">
    var f1 = function () {
        // alert(arguments)     //[object Arguments]
        // alert(arguments.length)      //5
        
        /*可当做数组使用*/
        // alert(arguments[2]);   //abc
        // alert(arguments[3]);   //null
        // alert(arguments[4]);   //true
        for (var i = 0; i < arguments.length; i++) {
            alert(arguments[i]);    //1  12  abc  null  true
        }
        alert("无参函数");     //无参函数
    }
    //方法调用
    f1(1,12,"abc",null,true);
</script>

注意:
隐形参数并不限制于无参函数,就算是有参函数,也可以用

此时的形参也可以在函数体内进行调用,传入参数的顺序为形参

<script type="text/javascript">
    var f1 = function (a) {
        alert(arguments.length)      //5
        for (var i = 0; i < arguments.length; i++) {
            alert(arguments[i]);    //1  12  abc  null  true
        }
        alert("形参为"+a)    //形参为1
    }
    //方法调用
    f1(1,12,"abc",null,true);
</script>

需求:
要求编写 一个函数,用于计算所有传入参数相加的和并返回

<script type="text/javascript">
    var sum = function (s1,s2) {
        var result = 0;
        for (var i = 0; i < arguments.length; i++) {
			result += arguments[i];
        }
        return result;
    }
    alert(sum(1,2,3,4,5,6,7))       //28
    alert(sum(1,2,3,"abc",4,5,6,7))     //6abc4567
</script>

若参数有字符串,会造成字符串拼接

改良后如下
这里的"number"不是字符串,就直接是指数字类型

<script type="text/javascript">
    var sum = function (s1,s2) {
        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,"abc",4,5,6,7))     //28
</script>

5、JS 中的自定义对象(扩展内容)

5.1、Object 形式的自定义对象

对象的定义:

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

对象的访问:

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

代码示例:

<script type="text/javascript">
    //自定义对象
    var obj = new Object();
    obj.name = "小草莓";
    obj.age = 18;
    obj.f1 = function () {
        alert("姓名为"+this.name+"年龄为"+this.age)
    }
    
    //对象的访问
    alert(obj.name);    //小草莓
    alert(obj.age);     //18
    obj.f1();     //姓名为小草莓年龄为18
</script>

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

对象的定义:

var 变量名 = {}   // 空对象 
var 变量名 = {    //带属性和函数的对象,中间用逗号隔开
	属性名:, 
	属性名:, 
	...
	属性名:,
	函数名:function(){}
}

对象的访问:

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

示例代码:

<script type="text/javascript">
    //自定义对象
    var obj = {
        name:"小草莓",
        age:18,
        f1:function () {
            alert("姓名为"+this.name+"年龄为"+this.age)
        }
    };
    
    //对象的访问
    alert(obj.name);    //小草莓
    alert(obj.age);     //18
    obj.f1();     //姓名为小草莓年龄为18}
</script>

6、js 中的事件

事件是电脑输入设备(鼠标、键盘)与页面进行交互的响应,我们称之为事件

常用的事件:

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

输入框失去焦点就是你输入密码点进输入框之后,又点击输入框之外,一般会提示密码长度不够等等

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

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

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

动态注册基本步骤:
1、获取标签dom对象
2、标签dom对象.事件名 = fucntion(){}

6.1、onload 加载完成事件

页面加载完成之后,常用于做页面 js 代码初始化操作

静态注册 onload 事件

onload 事件是浏览器解析完页面之后就会自动触发的事件

此时就直接在通过html标签的属性来完成相应操作,但是代码量过大的时候,可读性较差

所以先将所有操作封装进函数里面,再通过属性 onload 来调用函数

<script type="text/javascript">
    //静态注册 onload 事件的所有操作进行封装
    function onl() {
        alert("静态注册onload事件1");
        alert("静态注册onload事件2");
        alert("静态注册onload事件3");
    }
</script>
</head>
<body onload="onl()">
</body>

动态注册 onload 事件

固定写法 window.onload = function () {}表示页面加载完成

window.onload = function () {}的操作是浏览器读取完整个页面之后才执行的操作

<script type="text/javascript">
    //onload 事件动态注册,是固定写法
    window.onload = function () {
        alert("动态注册的 onload 事件");
    }
</script>

6.2、onclick 单击事件

常用于按钮的点击响应操作

静态注册 onclick 事件
一般和按钮结合操作
也是需要先将相关所有的操作封装进函数,再进行调用

<script type="text/javascript">
    //静态注册 onclick 事件的所有操作进行封装
    function onc() {
        alert("静态注册onclick事件1");
        alert("静态注册onclick事件2");
        alert("静态注册onclick事件3");
    }
</script>
</head>
<body>
    <!--静态注册 onclick 事件-->
    <button onclick="onc()">按钮</button>
</body>

动态注册 onclick 事件

  1. window.onload = function () {} 表示页面加载完成,最后才执行这里面的语句
  2. 获取标签对象document.getElementById("but001")
  3. 标签对象.事件名 = function(){}
<script type="text/javascript">
    //动态注册 onclick 事件,是固定写法
    window.onload = function () {
        // 1 获取标签对象
        var onc = document.getElementById("but001")
        //alert(onc);     //[object HTMLButtonElement]
        // 2 标签对象.事件名 = function(){}
        onc.onclick = function () {
            alert("动态注册的 onclick 事件");
        }
    }
</script>
</head>
<body>
    <button id="but001">按钮</button>
</body>

6.3、onblur 失去焦点事件

常用用于输入框失去焦点后验证其输入内容是否合法

静态注册 onblur 事件

也是需要先将相关所有的操作封装进函数,再进行调用

<script type="text/javascript">
    //静态注册 onblur 事件
    function onb() {
        //console 是控制台对象,是由JS语言提供,专门用来向浏览器的控制器打印输出,用于测试使用
        //log() 是打印的方法
        //输出的结果在浏览器的开发者模式控制台F12
        console.log("静态注册失去焦点事件");
    }
</script>
</head>
<body>
    用户名:<input type="text" onblur="onb()"/><br/>
    用户密码:<input type="password"/>
</body>

在这里插入图片描述

动态注册 onblur 事件

  1. window.onload = function () {}表示页面加载完成,最后才执行这里面的语句
  2. 获取标签对象document.getElementById("but001")
  3. 标签对象.事件名 = function(){}
<script type="text/javascript">
    // 动态注册 onblur 事件
    window.onload = function () {
        //1 获取标签对象
        var passwordObj = document.getElementById("pw");
        // alert(passwordObj);    //[object HTMLInputElement]
        // 2 通过标签对象.事件名 = function(){};
        passwordObj.onblur = function () {
        	//输出的结果在浏览器的开发者模式控制台F12
            console.log("动态注册失去焦点事件");
        }
    }
</script>
</head>
<body>
用户名:<input type="text"/><br/>
用户密码:<input type="password" id="pw"/>
</body>

在这里插入图片描述

6.4、onchange 内容发生改变事件

常用于下拉列表和输入框内容发生改变后操作

静态注册 onchange 事件

也是需要先将相关所有的操作封装进函数,再进行调用

<script type="text/javascript">
    function onc() {
        alert("内容发生改变事件")
    }
</script>
</head>
<body>
<!--静态注册 onchange 事件-->
    请选择你心中的水果神:
    <select onchange="onc()">
        <option>小草莓</option>
        <option>西瓜</option>
        <option>哈密瓜</option>
    </select>
</body>

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

动态注册 onchange 事件

  1. window.onload = function () {}表示页面加载完成,最后才执行这里面的语句
  2. 获取标签对象document.getElementById("but001")
  3. 标签对象.事件名 = function(){}
<script type="text/javascript">
    //动态注册 onchange 事件
    window.onload  = function () {
        //1 获取标签对象
        var v = document.getElementById("001")
        // alert(v)    //[object HTMLSelectElement]

        //2 标签对象.事件名 = function(){}
        v.onchange = function () {
            alert("内容发生改变事件")
        }
    }
</script>
</head>
<body>
    请选择你心中的水果神:
    <select id="001">
        <option>小草莓</option>
        <option>西瓜</option>
        <option>哈密瓜</option>
    </select>
</body>

6.5、onsubmit 表单提交事件

常用于表单提交前,验证所有表单项是否合法

静态注册 onsubmit 事件

注意静态需要 return 来确认是否要进行提交,如果是return false,会阻止提交
onsubmit="return onsubmitFun();"

动态注册 onsubmit 事件

  1. window.onload = function () {}表示页面加载完成,最后才执行这里面的语句
  2. 获取标签对象document.getElementById("but001")
  3. 标签对象.事件名 = function(){}
<script type="text/javascript">
    // 静态注册表单提交事务
    function onsubmitFun(){
        // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
        alert("静态注册表单提交事件----发现不合法");
        return flase;   //这里如果是返回true就会正常提交
    }

    window.onload = function () {
        //1 获取标签对象
        var formObj = document.getElementById("form01");
        // alert(formObj)   //[object HTMLFormElement]
        //2 通过标签对象.事件名 = function(){}
        formObj.onsubmit = function () {
            // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
            alert("动态注册表单提交事件----发现不合法");
            return false;   //这里如果是返回true就会正常提交
        }
    }
</script>
</head>
<body>
    <!--οnsubmit="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>

7、DOM 模型★★★

可查看文档:W3school.CHM

7.1、Document 对象★★★

在这里插入图片描述
Document 对象的理解:
第一点:Document 它管理了所有的 HTML 文档内容。
第二点:document 它是一种树结构的文档,有层级关系。
第三点:它让我们把所有的标签都对象化
第四点:我们可以通过 document 访问所有的标签对象

在这里插入图片描述
注意上面图片中的单词并不是随便定义的,是 JS 中的关键字

7.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 是要创建的标签名

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

7.2.1、getElementById(id)

需求:
当用户点击了校验按钮,要获取输入框中的内容。然后验证其是否合法
验证的规则是:必须由字母,数字。下划线组成,并且长度是 5 到 12 位

<script type="text/javascript">
    function onclickfun() {
        //要获取输入框的内容,即是获取input标签的value属性。若用户没有输入,则value属性就是默认值,若有输入,value属性就是用户输入的值
        //1、获取input标签对象
        var inputelement = document.getElementById("001");
        // alert(inputelement);    // [object HTMLInputElement]
        // alert(inputelement.type)   //text 通过‘标签对象.属性’可获得属性值

        //2、获取input标签的value属性
        var usernameText = inputelement.value;

        //3、验证字符串是否符合某种规则,需要用到正则表达式、test()方法  ‘规则.test(字符串)’
        //test()方法用于测试字符串是否符合规则,符合就返回true,否则返回false
        var patt = /^\w{5,12}$/;
        if(patt.test(usernameText)){
            alert("用户名合法!");
        }else {
            alert("用户名不合法!");
        }
    }
</script>
</head>
<body>
    <form>
        用户名:<input type="text" id="001" value="默认值"/><br/>
        <button onclick="onclickfun()">校验</button>
    </form>
</body>

对上面代码进行升级

实现提示为红色
在这里插入图片描述

<script type="text/javascript">
    function onclickfun() {
        //1、获取input标签对象
        var inputelement = document.getElementById("001");
        //2、获取input标签的value属性
        var usernameText = inputelement.value;
        //3、验证字符串是否符合某种规则,需要用到正则表达式、test()方法  ‘规则.test(字符串)’
        //test()方法用于测试字符串是否符合规则,符合就返回true,否则返回false
        var patt = /^\w{5,12}$/;

        //获取span标签对象
        var spanelement = document.getElementById("002");
        //获取两个尖括号之间的文本
        // spanelement.innerHTML = "";
        if(patt.test(usernameText)){
            spanelement.innerHTML = "用户名合法!"
            // alert("用户名合法!");
        }else {
            // alert("用户名不合法!");
            spanelement.innerHTML = "用户名不合法!"
        }
    }
</script>
</head>
<body>
        用户名:<input type="text" id="001" value="默认值"/><br/>
        <span id="002" style="color: red"></span>
        <button onclick="onclickfun()">校验</button>
</body>

对上面代码进行升级

实现提示的是√和×的图片
在这里插入图片描述

<script type="text/javascript">
    function onclickfun() {
        //获取input标签对象
        var inputelement = document.getElementById("001");
        var usernameText = inputelement.value;
        var patt = /^\w{5,12}$/;

        //获取span标签对象
        var spanelement = document.getElementById("002");
        //获取两个尖括号之间的文本
        // spanelement.innerHTML = "";
        if(patt.test(usernameText)){
            spanelement.innerHTML = "用户名合法!<img src=\"right.png\" width=\"18\" height=\"18\">"
        }else {
            spanelement.innerHTML = "用户名不合法!<img src=\"wrong.png\" width=\"18\" height=\"18\">"
        }
    }
</script>
</head>
<body>
        用户名:<input type="text" id="001" value="默认值"/><br/>
        <span id="002" style="color: red"></span>
        <button onclick="onclickfun()">校验</button>
</body>

7.2.2、getElementsByName全选反选案例

需求:
实现多选框的全选、全不选、反选

<script type="text/javascript">
    // 全选
    function checkAll() {
        // document.getElementsByName();是根据 指定的 name 属性查询返回多个标签对象集合
        //集合中每个元素都是input标签的 dom 对象
        var hobbies = document.getElementsByName("hobby");
        // alert(hobbies[0].value)   //cpp

        // checked 表示复选框的选中状态。如果选中是 true,不选中是 false
        // checked 这个属性可读,可写,可以赋值
        // alert(hobbies[1].checked)     //false
        // hobbies[1].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++){
            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>

7.2.3、getElementsByTagName(tagname)

通过标签名的获取方式,实现上个例子中的全选操作

<script type="text/javascript">
    // 全选
    function checkAll() {
        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="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>
</body>

7.2.4、createElement(tagName)

注意可能需要结合 onload 的动态注册一起使用

    <script type="text/javascript">
        window.onload = function () {
            //现在需要我们使用JS代码来创建 html 标签,并显示在页面上
            //标签的内容:<div>小草莓,大西瓜</div>
            var divElement = document.createElement("div");  //此时在内存中   <div></div>
            divElement.innerHTML = "小草莓,大西瓜";   //此时在内存中   <div>小草莓,大西瓜</div>
            //将标签放入body标签作为子节点     body对象.appendChild(divElement)
            //document有个body属性可以直接返回body的对象
            document.body.appendChild(divElement)
            //在执行该句的时候,后面的句子浏览器还未读取到,不知道有个标签名为body,所以此时就需要 window.onload = function () {}
        }
    </script>

在这里插入图片描述
在给div标签输入文本内容的时候,除了给 innerHTML进行赋值,还可以使用创建文本节点的方式

如此,也相当于解释了空格或者换行也算作是节点

    <script type="text/javascript">
        window.onload = function () {
            //现在需要我们使用JS代码来创建 html 标签,并显示在页面上
            //标签的内容:<div>小草莓,大西瓜</div>
            var divElement = document.createElement("div");  //<div></div>
            
            var text = document.createTextNode("小草莓,大西瓜");
            divElement.appendChild(text);   //<div>小草莓,大西瓜</div>
            
            //document有个body属性可以直接返回body的对象
            document.body.appendChild(divElement)
        }
    </script>

正则表达式

文档:w3cschool菜鸟教程 新版本.chm——>完整 RegExp 对象参考手册
在这里插入图片描述

在这里插入图片描述
\w 元字符用于查找单词字符。
单词字符包括:a-z、A-Z、0-9,以及下划线, 包含 _ (下划线) 字符。

n{X}匹配包含 X 个 n 的序列的字符串
就是必须连续包含X个n

n{X,Y}表示最少X个连续的n,最多Y个连续的n

7.3、节点的常用属性和方法

节点就是标签对象

方法:(通过具体的元素节点调用 )

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

属性:
childNodes属性
获取当前节点的所有子节点 ,包括节点标签之间的空格也算子节点

firstChild 属性,获取当前节点的第一个子节点
一般结果都是 undefined,因为是换行或空格
firstElementChild查询第一个真正的子节点,使用此属性

lastChild属性
获取当前节点的最后一个子节点
parentNode属性
获取当前节点的父节点
nextSibling属性
获取当前节点的下一个节点

previousSibling 属性,获取当前节点的上一个节点
一般结果都是 undefined,因为是换行或空格
previousElementSibling查询上一个真正的子节点,使用此属性

className属性
用于获取或设置标签的 class 属性值
innerHTML属性
表示获取/设置起始标签和结束标签中的内容
innerText属性
表示获取/设置起始标签和结束标签中的文本

示例:
获取 id 为 city 下所有 li 节点

因为获取到的取 id 为 city 的节点也是document对象
var lis = document.getElementById("city").getElementsByTagName("li");

返回 id 为 city 的所有子节点

注意这里空格也算是子节点,所以结果是9,而不是4
alert(document.getElementById("city").childNodes.length);   //9

在这里插入图片描述
返回 id 为 phone 的第一个子节点

注意,因为由上个例子可知,空格也是子节点,所以这里的输出是undefined

这里的输出是undefined
alert(document.getElementById("phone").firstChild.innerHTML);   //undefined

所以应该用firstElementChilds属性

alert(document.getElementById("phone").firstElementChild.innerHTML);   //IOS

同理,使用previousElementSibling查询上一个真正的子节点

alert(document.getElementById("android").previousElementSibling.innerHTML);   //IOS
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值