JavaWeb(2)——javaScript

JavaWeb-【2】CSS和JavaScript 前端全系列超详细笔记!! 持续更新到全部完结 阅读详情

目录

JavaScript 介绍

JavaScript 和 html 代码的结合方式

第一种方式

第二种方式

JavaScript 的变量类型

JS代码演示JS变量

JS关系(比较)运算

​编辑

逻辑运算

数组定义方式

函数的二种定义方式

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

JS 中的自定义对象两种方式

 JS 中的事件(event)

常用的事件(event)

事件的注册(绑定) 

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

onload页面加载完成事件

onclick 单击事件

onblur 失去焦点事件

onchange事件改变

 onsubmit 表单提交事件

Document模型

通过以下图片对Document对象的理解

回顾对象化

Document 对象中的方法介绍

 getElementById 方法示例代码:

 (中间插入知识)正则表达式代码演示

 getElementsByName 方法示例代码

getElementsByTagName 方法示例代码

​编辑

createElement 方法示例代码

节点的常用属性和方法

DOM查询代码演示(重要)


JavaScript 介绍

Javascript 语言诞生主要是完成页面的数据验证。因此它运行在客户端,需要运行浏览器来解析执行 JavaScript 代码。
JS 是 Netscape 网景公司的产品,最早取名为 LiveScript; 为了吸引更多 java 程序员。更名为 JavaScript 。
JS 是弱类型(数据类型可变), Java 是强类型(定义变量时,类型已经确认不可以更改)。
特点:
1. 交互性(它可以做的就是信息的动态交互,也就是前端页面与用户交互)
2. 安全性(不允许直接访问本地硬盘,以免用户打开网页会导致自己电脑内容遭到篡改)
3. 跨平台性(JS代码只要是可以解析的  JS代码 的浏览器都可以执行,和平台无关)

JavaScript 和 html 代码的结合方式

第一种方式

只需要在<head> 标签中或者在 <body>   标签中, 使用 script 标签 来书写 JavaScript 代码
JS执行顺序为<head>标签再到--><body>标签,也就是由上到下,具体还得看业务如何实现
<!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>
        <script type="text/javascript">
            alert("国哥现在可以帅了");
        </script>
    </body>
</html>

第二种方式

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

1.js文件内容

alert("1125 hello!");

html引入js文件

<!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>
    </head>
    <body>

    </body>
</html>

JavaScript 的变量类型

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

JavaScript 的变量类型:
数值类型:         number
字符串类型:        string
对象类型:         object
布尔类型:         boolean
函数方法类型:         function
JavaScript 里特殊的值:
undefined         未定义,所有 js 变量未赋于初始值的时候,默认值都是 undefined.
null                   空值
NaN                 全称是:Not a Number。非数字。非数值。
JS 中的定义变量格式:
var 变量名 ;
var 变量名 = 值 ;

JS代码演示JS变量

<!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,是JS函数的数值类型
            i = "abc";
            alert(typeof (i)); // String,是JS函数的字符串类型

            var a = 12;
            var b = "abc";
            alert(a * b); // NaN是非数字,非数值,因为若类型,所以这里不会报错

        </script>
    </head>
    <body>

    </body>
</html>

 

JS关系(比较)运算

等于: == 等于是简单的做字面值的比较
全等于: === 除了做字面值的比较之外,还会比较两个变量的数据类型
<!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>

逻辑运算

且运算: &&
或运算: ||
取反运算: !
<!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("零为真");
            // } 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";//这里abc不是空串,因此认定为true
            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>

数组定义方式

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 = [true, 1]; // 定义一个数组
            alert(arr.length); // 2,数组长度

            arr[0] = 12;
            alert(arr[0]);//12
            alert(arr.length); // 2

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

            alert(arr[1]);// 1
            // 数组的遍历
            for (var i = 0; i < arr.length; i++) {
                alert(arr[i]);//12、1、abc
            }

        </script>
    </head>
    <body>
    </body>
</html>

函数的二种定义方式

第一种:可以使用 function 关键字来定义函数

语法格式:

如果是有返回值的函数,不需要设置返回值,只需要return语句+返回值即可

function 函数名(形参列表){
    函数体
    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);
            }

            // 定义带有返回值的函数
            function sum(num1, num2) {
                var result = num1 + num2;
                return result;
            }

            //调用函数
            fun();//无参函数fun()被调用了
            fun2(12, "abc")//有参函数fun2()被调用了 a:12,b:abc
            var sum1 = sum(100, 50);
            alert(sum1);//150
            alert(sum(100, 50));//150

        </script>
    </head>
    <body>

    </body>
</html>

第二种语法格式:

var 函数名 = function(形参列表){
    函数体
    return 变量
}
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">


            function fun(a, b) {
                alert("有参函数fun(a,b)");
            }

            function fun() {
                alert("无参函数fun()");
            }

            fun(1, "ad");//无参函数fun()
            fun();//无参函数fun()

        </script>
    </head>
    <body>

    </body>
</html>

注:在 Java 中函数允许重载。但是在 JS 中函数的重载会直接覆盖掉上一次的定义,因此JS代码不允许重载,否则会有逻辑错误!!!!!!!!!!!!!!!!!!!!!!!!
下面代码演示JS没有方法重载

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


        function fun(a,b) {
            alert("有参函数fun(a,b)");
        }

        function fun() {
            alert("无参函数fun()");
        }

        fun(1,"ad");//无参函数fun()
		fun();//无参函数fun()

    </script>
</head>
<body>

</body>
</html>

 

函数的 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);//3,可看参数个数

                alert(arguments[0]);//1
                alert(arguments[1]);//ad
                alert(arguments[2]);//true

                alert("a = " + a);//a=1,只展示下标为0的参数

                for (var i = 0; i < arguments.length; i++) {
                    alert(arguments[i]);//1,"ad",true
                }

                alert("含参函数fun(a)");//含参函数fun(a)
            }

            fun(1,"ad",true);

            // 需求:要求 编写 一个函数。用于计算所有参数相加的和并返回
            function sum() {
                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));//45
        
        </script>
    </head>
    <body>

    </body>
</html>

JS 中的自定义对象两种方式

第一种语法格式:

对象的定义:
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);//18
            obj.fun();//姓名:华仔,年龄: 18

        </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 变量名 = {			// 空对象
            //     属性名:值,			// 定义一个属性
            //     属性名:值,			// 定义一个属性
            //     函数名:function(){}	// 定义一个函数
            // };
            var obj = {
                name: "国哥",
                age: 18,
                fun: function () {
                    alert("姓名:" + this.name + " , 年龄:" + this.age);
                }
            };

            // 对象的访问:
            //     变量名.属性 / 函数名();
            alert(obj.name);//国哥
            obj.fun();//姓名:国哥,年龄: 18

            //定义空对象,然后再设置对象属性,然后再查看对象属性
            var obj1 = {};
            obj1.name = 1;
            alert(obj1.name);//1
        </script>
    </head>
    <body>

    </body>
</html>

 JS 中的事件(event)

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

常用的事件(event)

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

事件的注册(绑定) 

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

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

静态注册事件 :通过 html 标签的事件属性直接赋于事件响应后的代码,这种方式我们叫静态注册。
动态注册事件 :是指先通过 js 代码得到标签的 dom 对象(下面会介绍DOM模型),然后再通过 dom 对象 . 事件名 = function(){} 这种形式赋于事件
注意:将DOM的读取部分的script放在body后面。或者在script标签中添加 window.onload,等页面加载结束后再执行这一部分 响应后的代码,叫动态注册。
静态注册步骤:
        1、通过在html的标签上添加事件属性和属性值
        提示:onload有介绍静态注册案例
动态注册基本步骤:
        1、获取标签对象 可以使用 document.getElementById("标签id") 获取标签对象
        2、标签对象 . 事件名 = fucntion(){}
        提示:onclick有介绍动态注册案例

onload页面加载完成事件

注意js代码不允许方法重载,因此最终效果是执行了onloadFun()函数,效果如下图.

除非去掉<body>标签的onload属性,否则以<body>标签的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 onload="onloadFun();"><!--最终执行的是静态注册onload事件,因为js代码不允许方法重载,因此执行的是最后的onload()方法-->

    </body>
</html>

onclick 单击事件

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            function onclickFun() {
                alert("静态注册onclick事件");
            }

            // 动态注册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>
        <!--动态注册onClick事件-->
        <button id="btn01">按钮2</button>
    </body>
</html>

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);
                //2 通过标签对象.事件名 = function(){};
                passwordObj.onblur = function () {
                    console.log("动态注册失去焦点事件");
                }
            }

        </script>
    </head>
    <body>
        用户名:<input type="text" onblur="onblurFun();"><br/>
        密码:<input id="password" type="text"><br/>
    </body>
</html>

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 selObj = document.getElementById("sel01");
                // alert( selObj );
                //2 通过标签对象.事件名 = function(){}
                selObj.onchange = function () {
                    alert("男神已经改变了");
                }
            }


        </script>
    </head>
    <body>
        请选择你心中的女神:
        <!--静态注册onchange事件-->
        <select onchange="onchangeFun();">
            <option>--女神--</option>
            <option>芳芳</option>
            <option>佳佳</option>
            <option>娘娘</option>
        </select>

        请选择你心中的男神:
        <select id="sel01">
            <option>--男神--</option>
            <option>国哥</option>
            <option>华仔</option>
            <option>富城</option>
        </select>


    </body>
</html>

 onsubmit 表单提交事件

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            // 静态注册表单提交事务
            function onsubmitFun() {
                // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
                alert("静态注册表单提交事件----发现不合法");

                return false;//这里是防止事件提交以至于出现没有服务器处理这个请求,返回404响应
            }

            window.onload = function () {
                //1 获取标签对象
                var formObj = document.getElementById("form01");
                //2 通过标签对象.事件名 = function(){}
                formObj.onsubmit = function () {
                    // 要验证所有表单项是否合法,如果,有一个不合法就阻止表单提交
                    alert("动态注册表单提交事件----发现不合法");

                    return false;//这里是防止事件提交以至于出现没有服务器处理这个请求,返回404响应
                }
            }

        </script>
    </head>
    <body>
        <!--这里onsubmit = "return false" 可以阻止 表单提交,否则会有没有服务器处理这个请求,返回404响应,下面动态注册事件同理 -->
        <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>

Document模型

DOM 全称是 Document Object Model 文档对象模型
就是把文档中的标签,属性,文本,转换成为对象来管理。
那么 它们是如何实现把标签,属性,文本转换成为对象来管理呢。这就是我们马上要学习的重点

通过以下图片对Document对象的理解

        第一点:Document 它管理了所有的 HTML 文档内容。

        第二点:document 它是一种树结构的文档。有层级关系。

        第三点:它让我们把所有的标签 都 对象化

        第四点:我们可以通过 document 访问所有的标签对象。

回顾对象化

举例:
有一个人有年龄:18 岁,性别:女,名字:张某某
我们要把这个人的信息对象化怎么办!
Class Person {
    private int age;
    private String sex;
    private String name;
}
html 标签 要 对象化
<body> 
    <div id="div01">div01</div> 
</body>

//模拟对象化,相当于: 
class Dom{ 
    private String id; // id 属性 
    private String tagName; //表示标签名 
    private Dom parentNode; //父亲 
    private List<Dom> children; // 孩子结点 
    private String innerHTML; // 起始标签和结束标签中间的内容 }

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 对象的三个查询方法
  1. 如果有 id 属性,优先使用 getElementById 方法来进行查询
  2. 如果没有 id 属性,则优先使用 getElementsByName 方法来进行查询
  3. 如果 id 属性和 name 属性都没有最后再按标签名查 getElementsByTagName
  4. 以上三个方法,一定要在页面加载完成之后执行,也就是window.onload,才能查询到标签对象。

 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");// usernameObj = [object HTMLInputElement]说明它就是dom对象
                var usernameText = usernameObj.value;//usernameObj.value,以字符串形式返回id:username输入框内输入的内容

                // 如何 验证 字符串,符合某个规则 ,需要使用正则表达式技术
                var patt = /^\w{5,12}$/;

                var usernameSpanObj = document.getElementById("usernameSpan");//获取id:usernameSpan标签对象
                // innerHTML 既可以表示起始标签和结束标签中间的内容包括标签可以被JS读,也可以被JS中写
                alert(usernameSpanObj.innerHTML);
                /*
                                显示有三种情况
                                ""
                                <img src="wrong.png" width="18" height="18">
                                <img src="right.png" width="18" height="18">
                */
                /*
                                正则表达式的变量.test()方法用于测试某个字符串,是不是匹配我的规则 ,
                                匹配就返回true。不匹配就返回false.
                */
                if (patt.test(usernameText)) {
                    // alert("用户名合法!");
                    <!-- usernameSpanObj.innerHTML = "用户名合法!"; -->
                    usernameSpanObj.innerHTML = "<img src=\"right.png\" width=\"18\" height=\"18\">";//把正确的图片写入
                } else {
                    // alert("用户名不合法!");
                    <!-- usernameSpanObj.innerHTML = "用户名不合法!"; -->
                    usernameSpanObj.innerHTML = "<img src=\"wrong.png\" width=\"18\" height=\"18\">";//把错误的图片写入
                }
            }
        </script>
    </head>
    <body>
        用户名:<input type="text" id="username" value="wzg"/>
        <span id="usernameSpan" style="color:red;">""</span>
        <!--当按钮被点击时,onclickFun()方法将会被执行-->
        <button onclick="onclickFun()">校验</button>
    </body>
</html>

 (中间插入知识)正则表达式代码演示

<!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?/;

            // 表示要求 字符串是否包含连续三个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}$/;

            //要求字符串必须由字母,数字,下划线组成,并且长度只能5~12位
            var patt = /^\w{5,12}$/;

            var str = "wzg168[[[";

            alert(patt.test(str));//false
            
        </script>
    </head>
    <body>

    </body>
</html>

 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");
                /*
                                checked表示复选框的选中状态。如果选中是true,不选中是false
                                并且checked 这个属性可读,可写
                */
                for (var i = 0; i < hobbies.length; i++) {
                    hobbies[i].checked = true;//全部选中
                }
            }

            //全不选
            function checkNo() {

                var hobbies = document.getElementsByName("hobby");
                // checked表示复选框的选中状态。如果选中是true,不选中是false
                // checked 这个属性可读,可写
                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>

getElementsByTagName 方法示例代码

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

            // 全选
            function checkAll() {
                alert(document.getElementById("btn01"));//[object HTMLButtonElement]
                /*
                                document.getElementsByTagName("标签名");
                                是按照指定标签名来进行查询并返回集合,这个集合的操作跟数组一样,集合中都是dom对象,
                                集合中元素顺序是他们在html页面中从上到下的顺序。
                */
                var inputs = document.getElementsByTagName("input");//选中<input>标签

                for (var i = 0; i < inputs.length; i++) {
                    inputs[i].checked = true;//改变全部选框为选中状态
                }
            }
        </script>
    </head>
    <body>

        <!--爱好默认选中c++ -->
        兴趣爱好:
        <input type="checkbox" value="cpp" checked="checked">C++
        <input type="checkbox" value="java">Java
        <input type="checkbox" value="js">JavaScript
        <br/>
        <button id="btn01" onclick="checkAll()">全选</button>

    </body>
</html>

createElement 方法示例代码

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script type="text/javascript">
            //整个html页面加载完后执行该函数
            window.onload = function () {
/*
                现在需要我们使用js代码来创建html标签,并显示在页面上
                标签的内容就是:<div>国哥,我爱你</div>
*/
                var divObj = document.createElement("div");//此时标签在内存中<div></div>

                <!-- 添加文本节点对象方式1 -->
            // divObj.innerHTML = "国哥,我爱你";//<div>国哥,我爱你</div>,但还只是在内存中
                <!-- 添加文本节点对象方式2 -->
                var textNodeObj = document.createTextNode("国哥,我爱你");
                divObj.appendChild(textNodeObj); // <div>国哥,我爱你</div>,但还只是在内存中
                // 添加子元素
                document.body.appendChild(divObj);//页面展示"国哥,我爱你",意味着<div>国哥,我爱你</div>已经被添加在<body><body/>中
            }
        </script>
    </head>
    <body>

    </body>
</html>

节点的常用属性和方法

说明:节点可以理解为就是标签对象,因为我们除标签对象以外的对象(字符串)很少会起作用

dom对象的方法:

  • 通过具体的元素节点调用 getElementsByTagName() 方法,获取当前节点的指定标签名孩子节点.(其实还有另外两种方法,一共三种方法获取当前节点的指定标签名孩子节点)
  • appendChild( oChildNode ) 方法,可以添加一个子节点,oChildNode 是要添加的孩子节点.(详细查看createElement 方法示例代码)

属性:

  1. childNodes 属性,获取当前节点的所有子节点。注意:便签之间隔开的回车字符也算一个子节点
  2. firstChild 属性,获取当前节点的第一个子节点
  3. lastChild 属性,获取当前节点的最后一个子节点
  4. parentNode 属性,获取当前节点的父节点
  5. nextSibling 属性,获取当前节点的下一个节点
  6. previousSibling 属性,获取当前节点的上一个节点
  7. className 用于获取或设置标签的 class 属性值
  8. innerHTML 属性,表示获取/设置起始标签和结束标签中的内容,包括标签+文本对象
  9. innerText 属性,表示获取/设置起始标签和结束标签中的文本,但它去除Html标签,只有文本对象
  10. 8和9的区别是是否包含标签

DOM查询代码演示(重要)

css文件

@CHARSET "UTF-8";

body {
	width: 800px;
	margin-left: auto;
	margin-right: auto;
}

button {
	width: 300px;
	margin-bottom: 10px;
}

#btnList {
	float:left;
}

#total{
	width: 450px;
	float:left;
}

ul{
	list-style-type: none;
	margin: 0px;
	padding: 0px;
}

.inner li{
	border-style: solid;
	border-width: 1px;
	padding: 5px;
	margin: 5px;
	background-color: #99ff99;
	float:left;
}

.inner{
	width:400px;
	border-style: solid;
	border-width: 1px;
	margin-bottom: 10px;
	padding: 10px;
	float: left;
}

html文件引入css文件

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>dom查询</title>
        <!--引入css样式-->
        <link rel="stylesheet" type="text/css" href="style/css.css"/>
        <script type="text/javascript">
            window.onload = function () {
                //1.查找#btn01节点,设置点击事件,点击之后找到#bj节点,然后获取其开头标签与结尾标签中的内容
                document.getElementById("btn01").onclick = function () {
                    var bjObj = document.getElementById("bj");
                    alert(bjObj.innerHTML);//北京
                }
                //2.查找所有#btn02节点,设置点击事件,找到li节点,获取<li>标签的数量
                var btn02Ele = document.getElementById("btn02");
                btn02Ele.onclick = function () {
                    var lis = document.getElementsByTagName("li");
                    alert(lis.length)//11
                };
                //3.查找所有#btn03节点,设置点击事件,查找name=gender的所有节点,并显示获取数量
                var btn03Ele = document.getElementById("btn03");
                btn03Ele.onclick = function () {
                    var genders = document.getElementsByName("gender");
                    alert(genders.length)//2
                };
                //4. 查找所有#btn04节点,设置点击事件,查找#city下所有li节点,并显示获取数量
                var btn04Ele = document.getElementById("btn04");
                btn04Ele.onclick = function () {
                    //先获取id为city的节点,再通过city节点.getElementsByTagName按标签名查子节点
                    var lis = document.getElementById("city").getElementsByTagName("li");
                    alert(lis.length)//4
                };
                //5.返回#city的所有子节点
                var btn05Ele = document.getElementById("btn05");
                btn05Ele.onclick = function () {
                    //先获取id为city的节点,再通过city获取所有子节点
                    alert(document.getElementById("city").childNodes.length);//便签之间隔开的回车字符也算一个子节点
                };
                //6.返回#phone的第一个子节点
                var btn06Ele = document.getElementById("btn06");
                btn06Ele.onclick = function () {
                    // 查询id为phone的节点的第一个子节点的文本对象
                    alert(document.getElementById("phone").firstChild.innerHTML);//IOS
                };
                //7.返回#bj的父节点
                var btn07Ele = document.getElementById("btn07");
                btn07Ele.onclick = function () {
                    //1 查询id为bj的节点
                    var bjObj = document.getElementById("bj");
                    //2 bj节点获取父节点
                    alert(bjObj.parentNode.innerHTML);//ul id="city">标签下的所有子节点信息,但不包括自己
                    /*
                                                //效果如下
                                                <li id="bj">北京</li>
                                                <li>上海</li>
                                                <li>东京</li>
                                                <li>首尔</li>
                    */
                };
                //8.返回#android的前一个兄弟节点
                var btn08Ele = document.getElementById("btn08");
                btn08Ele.onclick = function () {
                    // 先获取id为android的节点,再通过android节点获取前面兄弟节点
                    alert(document.getElementById("android").previousElementSibling.innerHTML);//IOS,这里previousSibling不知为什么失灵了!!!!!
                };
                //9.读取#username的value属性值
                var btn09Ele = document.getElementById("btn09");
                btn09Ele.onclick = function () {
                    alert(document.getElementById("username").value);//abcde
                };
                //10.设置并返回设置好的#username的value属性值
                var btn10Ele = document.getElementById("btn10");
                btn10Ele.onclick = function () {
                    document.getElementById("username").value = "国哥你真牛逼";
                    alert(document.getElementById("username").value);//国哥你真牛逼
                };
                //11.返回#city的文本值
                var btn11Ele = document.getElementById("btn11");
                btn11Ele.onclick = function () {
                    alert(document.getElementById("city").innerHTML);//<ul id="city">标签下的所有子节点,但不包括自己
                    /*
                                                //效果如下
                                                <li id="bj">北京</li>
                                                <li>上海</li>
                                                <li>东京</li>
                                                <li>首尔</li>
                    */
                    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">返回#bj的文本值</button>
            </div>
        </div>
    </body>
</html>

JavaWeb学习日志2(JS、Vue、Ajax) var add = (a,b)=>{/* 箭头函数 */return a+b; 阅读详情

相关推荐

BrepNet实战:5分钟搞定三维CAD模型的加工特征识别(附Python代码)

本文详细介绍了BrepNet在三维CAD模型加工特征识别中的实战应用,通过Python代码演示了从环境搭建到模型训练的全流程。BrepNet基于边界表示(BRep)的深度学习框架,能够高效识别加工特征,显著提升工业设计和智能制造领域的效率。文章还提供了性能优化和部署建议,帮助开发者快速实现AI驱动的几何特征识别。

weixin_29044713的博客 506

JavaWeb——JavaScript(2/4)-JS函数、JS对象(Array,String,JSON)

JavaScript中Array对象用于定义数组。定义var变量名 =newArray(元素列表);//方式一var变量名 =元素列表;//方式二访问arr[ 索引 ] = 值;注意:JavaScript中的数组相当于Java中集合,数组的长度是可变的,而JavaScript是弱类型,所以可以存储任意的类型的数据。属性属性描述length设置或返回数组中元素的数量。方法方法描述forEach()遍历数组中的每个有值的元素,并调用一次传入的函数push()

li13437542099的博客 1452

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7240

JavaWeb(4)JavaScript入门2—— JS的对象和JSON

本篇对JS的对象创建和JSON进行了概述,便于学习与应用。

Theodore_1022的博客 901

Zemax序列模式下激光二极管(LD)光源建模与像散校正实战

本文详细讲解了在Zemax序列模式下精确建立激光二极管(LD)光源模型并校正其像散的核心方法。通过将椭圆光束的发散角转换为渐晕系数,并巧妙利用理想柱面镜模拟像散,实现了对LD光源特性的高精度模拟。该方法特别适用于激光耦合、激光雷达等需要对像散光束进行精密控制的光学系统设计。

weixin_28455801的博客 435

基于Django+Vue3的目标检测系统设计与实现,Web前后端分离,Vue3前台系统+Django后台管理系统开发,YOLOv11 Web目标检测,实现图片、视频和摄像头检测等功能,全网独发

基于Django+Vue3的智能目标检测系统设计与实现,Web前后端分离,YOLOv11 Web目标检测,Vue3前台系统+Django后台管理系统开发,实现图片检测、视频检测、摄像头检测、登录、注册和个人中心功能

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 3666

JavaWeb JavaScript 2.JS的数据类型和运算符

JS为弱类型语言,统一使用var声明对象和变量,在赋值时才能确定真正的数据类型,变量如果只声明没有赋值的话,数据类型为underfined。布尔类型为boolean和Java中的Boolean相似,但是在JS的if语句中,非空字符串会被转换为“真”,非零数字也会被认为是“真”字符串类型为string,和Java中的String相似,JS中不严格区分单双引号,都可以表示字符串。JS是弱类型的,不是没有类型,而是变量在声明时不指定类型,赋值时才确定类型,关系 >、=、

m0_73983707的博客 513

国科大学习资料--现代数字信号处理I(张颢)--2020年期末考试试卷

国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 国科大学习资料–现代数字信号处理I(张颢)–2020年期末考试试卷 =========================================================================================================================================================

无名何许人的博客 3573

JavaWeb | 2 JavaScript

JavaWeb:前端基础之JavaScript,来源慕课网

qq_44581505的博客 825

工业相机,大恒,面振相机8脚电源线和I/O触发接口线,颜色和接法说明和触发软件设定

上图: 说明一下,工业相机有TTL逻辑电平触发,也有光耦触发等。 这里一般我们用电路板驱动,就用GPIO触发模式, 这里,准备了两个GPIO触发模式,为LINE2,LINE3都可以选择,然后有一个GPIO_GND 如果,你只有一个触发接口,那么如图,选两个就好了。 实际接法如图。 ...

山云的专栏 1万+

【人工智能】Spring AI项目在定义 `response_format` 的 Invalid schema for response_format ‘custom_schema‘

确保。

奶爸的编程之路,也就一周冷个三天 560

JavaWeb笔记---JavaScript基础知识2(js中的事件)

1.js中的事件 定义:什么是事件?事件是电脑输入设备与页面进行交互的响应,能称之为事件

SLSLSLSLSLSLS的博客 347

【AI智能体】基于OpenCode 搭建Skills环境与项目实战开发详解

基于OpenCode 搭建Skills环境与项目实战开发详解

congge 8899

Javaweb - 4.2 JavaScript

如果是 splice(2,2,"ele1","ele2","ele3"),就是从第 2 个下标开始,删除 2 个元素,再增加 ele1 ele2 ele3 元素~ 如下图,其中,桃子和荔枝就被删除了~语法:var str = '{"属性名":"属性值","属性名":"属性值","属性名":{},"属性名":["","",""],"属性名":[{},{},{}]}'我们在前后端进行代码编写时候,前端用 JS 语言,来将对象的数据进行存储,在后端使用 Java 语言,来将对象的数据进行存储。

Zz_waiting的博客 946

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

javaWEB(2)——JavaScript

文章目录JavaScrip1 概述2 JS基础2.1 语法基础2.2 事件处理2.3 浏览器对象 JavaScrip 1 概述 1.概述 弱类型语言 JavaScript是客户端脚本语言,是一种基于对象(object)和事件驱动(Event Driven)的脚本语言。JavaScript认为文档和显示文档的浏览器都是由不同的对象组成的集合。这些对象具有一定的属性,你可以对这些属性进行修改或计算。 ...

weixin_45044097的博客 461

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

学习JavaWeb之JavaScript基础2

forEach()是一个简洁、有效的数组遍历方法,适用于简单的操作。如果你需要对数组的每个元素进行副作用操作(如打印、更新等),而不关心返回值时,forEach()是一个很好的选择。

m0_74006629的博客 1743

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【JavaWeb Day 2 - JS 】

ECMA国际前身为 “欧洲计算机制造商协会(European Computer Manufacturers Association)” ,制定了标准化的脚本程序设计语言ECMAScript,这种语言得到广泛应用。而JavaScript遵循ECMAScript标准。一门面向对象、跨平台的脚本语言,用于控制网页行为,使网页可交互。

qq_51776197的博客 520

Javaweb:2.JavaScript

标签

qq_61338849的博客 152

2、JavaWeb-JS-Vue

JS。Vue是一套前端框架,免除JS中的DOM操作,简化书写。

Misnearch的博客 1016

JavaWeb JavaScript(2)

DOM简单学习:为了满足案例要求 * 功能:控制html文档的内容 * 获取页面标签(元素)对象:Element * document.getElementById("id值"):通过元素的id获取元素对象 * 操作Element对象: 1. 修改属性值: 1. 明确获取的对象是哪一个? 2. 查看API文档,找其中有哪些属性可以设置 2. 修改标签体内容: * 属性:innerHTML 1. 获取元素对象 ...

buxiangdongTT的博客 131

JavaWeb(2):JavaScript

1.JS与Java的典型区别; 2.JS简单操作: (1)test; (2)留言板; (3)四则运算器;

sadnjkjn的博客 141

JavaWeb全链路学习:2、JavaScript

JavaScript(简称 JS) 是一种广泛用于网页开发的脚本语言,主要用于为网页添加动态功能和交互性。它是一种轻量级、解释型、面向对象的编程语言,支持事件驱动、函数式编程和基于原型的对象模型。

qq_45703593的博客 987

2.Javaweb-javascript

javascript回顾 运算符 ==:类型不一样,值一样,返回true ===:类型一样,值一样,返回true(绝对等于) 数据类型 NaN:属于“number”类型,但它与所有的数值都不相等,包括自己 NaN === NaN; //false isNaN(NaN); //true null:表示定义了,但没有赋值 undefined:未定义 数组 js中数组的定义 var arr = [1, 23, 4, "js", true, 22.4, null]; java中数组的定义

sinat_32243063的博客 214

03-javaWeb-js2

JS获取设置元素 获取元素: var obj=document.getElementById("id值"); 获取元素的value属性 var val=document.getElementById("id值").value; 设置元素的value属性 document.getElementById("id值").value="sdfsdf"...

qq_38247809的博客 698

JavaWeb—js(2)

本文主要讲解了有关js的函数对象以及类的说明

rxdasd123456的博客 649

javaweb_day2_JavaScript

ECMAScript:语法,语句 BOM:浏览器对象模型 DOM:文档对象模型(操作文档中的元素和内容) 变量 var ==和=== ==比较的是值 ===比较的是值和类型 var i=”3”; alert(typeof(i)); 注释 // /**/ 求任意两个数之间的随机数 Math.floor(Math.random...

郭叶兵的博客 444
上一篇: JavaWeb(1)——html与css
下一篇: JavaWeb(3)——jQuery(1)
自律彭于晏
博客等级 码龄5年 946粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值