首页 > 编程语言 >03_JavaScript

03_JavaScript

时间:2023-07-25 21:55:05浏览次数:50  
标签:03 元素 console log JavaScript getElementById var document

一.JavaScript概述

1.简介

JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。

它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网页增加动态功能

脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编程语言。

一个脚本通常是解释执行而非编译。

2.组成部分

ECMAScript:也叫解释器,充当翻译角色,这是JavaScript的核心部分;

DOM:文档对象模型(Document Object Model),DOM赋予了JavaScript操作 HTML 的能力,即Document操作;

BOM:浏览器对象模型(Browser Object Model),BOM赋予了JavaScript操作浏览器的能力,即Window操作

3.目的

用于创建具有交互性较强的页面

动态更改内容

数据验证

4.使用位置

1.head中

<head>
    <script>
        JavaScript代码
    </script>
</head>


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JS在Head中使用</title>
		<script>
			//JavaScript在Head中运行
			//弹框
			alert("hello world");
			//在浏览器的控制台打印信息
			console.log("在console打印。。。。");
		</script>
	</head>
	<body>
	</body>
</html>

2.body中

<body>
    <script>
        JavaScript代码
    </script>
</body>


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>JS在body中使用</title>
	</head>
	<body>
		<script>
			alert("hello world");
		</script>
	</body>
</html>

3.JavaScript文件中

将JavaScript代码单独放到一个xxx.js文件中

HTML文件引用

/*弹出helloworld*/
alert("hello world");
<head>
    <script src="js路径"></script>
</head>


<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>在外部JS文件中使用</title>
		<script type="text/javascript" src="../js/test.js" >
			/*如果引入了外部JS文件,引入文件的script标签内部的代码不起作用。
			 *如果需要运行其他的JS代码,重新写一组script标签
			 */
		</script>
		<script>
			alert("*****");
		</script>
	</head>
	<body>
	</body>
</html>

4.嵌入HTML标签的事件中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>结合事件使用</title>
	</head>
	<body>
		<!--
		 	button按钮
		 	onclick:鼠标单击事件
		-->	 
		<input type="button" onclick="alert('hello wolrd');" />
	</body>
</html>

5.如何运行

1.自动执行型

2.事件驱动型: 通过HTML元素事件触发执行,如按钮的onclick事件

二.JavaScript基础语法

1.变量

旧版

var a;

新版

let a;

变量的有number、string、boolean、undefined(未定义)、null(空值)、object六种

在JavaScript中,当一个变量未被初始化的时候,它的值为undefined

判断是哪种数据类型:typeof运算符

2.运算符

算数运算

名称 运算符
+
-
*
/
求余 %
赋值 =
加等 +=
减等 -=
除等 /=
乘等 *=
求余等 %=
自增 ++
自减 --

逻辑运算

名称 运算符 描述
&& 要求表达式左右两边的表达式同为true,整体结果才为true
|| 要求表达式左右两边的表达式只要有一个为true,整体结果就为true
将布尔值取反操作

关系运算

名称 运算符
等于 ==
小于 <
小于或等于 <=
大于 >
大于或等于 >=
不等于 !=
值和类型相同 ===

三目运算符: ?:

数据类型转换,从网页获取的数据都是字符串,如果进行运算需要转换成相应的number类型。

  • parseInt
  • parseFloat

3.控制流程

1.分支结构

if-else分支

var a=1;
var b=1;
if(a==b){
    document.write("相等");
}else{
    document.write("不相等");
}
//很明显,运行结果是相等
//这就是if-else的结构,和Java语言是一样的。

switch分支

var a=2;
switch(a){
  case 1:
    document.write("值为1");
    break;
  case 2:
    document.write("值为2");
    break;
  case 3:
    document.write("值为3");
    break;
  default:
     document.write("值不是3也不是2也不是1");
}
/*
	三种程序结构
		1)顺序结构
		2)分支结构
			if
			switch
		3)循环结构
**/
var score = 80;
/*分支结构if*/
if(score >=60) {
    console.log("及格");
} else {
    console.log("不及格");
}


/*分支结构switch 0~100*/
switch (parseInt(score/60)){
    case 1:
        console.log("及格");
        break;
    case 0:
        console.log("不及格");
        break;
}

2.循环结构

for循环

var a=0;
for(var i=1;i<=100;i++){
    a+=i;
}
document.write(a);
//上述代码是对1~100求和。

while循环

var a=0;
var i=1;
while(i<=100){
   a+=i;
   i++;
}
document.write(a);
//上述代码是对1~100求和。

do-while循环

var a=0;
var i=1;
do{
    a+=i;
  	i++;
}while(i<=100);
document.write(a);
//上述代码是对1~100求和。

break与continue关键字

  • break用于结束循环
  • continue用于结束本次循环

4.数组

  • var arr = ["123", 1, "111"];
  • var arr = new Array(数组的长度);
  • var arr = new Array(1, "2", "aaa");

通过下标访问数组的元素,下标范围0~length-1

数组的常用方法

  • concat数组合并
  • reverse数组逆序
  • push()数组末尾添加新元素
  • pop()删除数组最后的元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        //定义数组
        let arr1 = [1,'hello',false,null];
        console.log(arr1);
        let arr2 = new Array(5);
        console.log(arr2);
        let arr3 = [1,2,3,'hello'];
        console.log(arr3);

        //获取数组长度
        console.log("arr1的长度: " + arr1.length);
        //访问数组的元素,数组名[下标] 下标: 0~数组长度-1
        console.log("arr1的第一个元素: " + arr1[0]);
        console.log("arr1的最后一个元素: " + arr1[arr1.length - 1]);

        //数组遍历 - i 表示数组元素的下标
        for (let i = 0; i < arr1.length; i++) {
            console.log(arr1[i]);
        }
        console.log("------------------------------");

        let i = 0;
        while(i < arr1.length){
            console.log(arr1[i]);
            i++;
        }
        console.log("+++++++++++++++++++++++++++++")
    </script>
</head>
<body>

</body>
</html>

5.自定义函数

函数定义方式1

//参数列表不用写参数类型
function 函数名(参数列表) {
    函数体
    return 返回值;
}

函数定义方式2

var 函数名 = function(参数列表) {
    函数体
    return 返回值;
}	
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>自定义函数</title>
		<script>
			/*求和1*/
			function sum1(a, b) {
				return a + b;
			}
			/*求和2*/
			var sum2 = function(a, b) {
				return a + b;
			}
			
			/*函数调用*/
			var sum = sum1(1, 5);
			console.log(sum);
			var sum2 = sum2(1, 5);
			console.log(sum2)
		</script>
	</head>
	<body>
	</body>
</html>

6.弹窗函数

alert弹框:这是一个只能点击确定按钮的弹窗

alert方法没有返回值,也就是说如果用一个变量去接受返回值,将会得到undefined。无论你点击“确定”还是右上角的那个“X“关闭。

alert("你好");

confirm弹框:这是一个可以点击确定或者取消的弹窗

confirm方法与alert不同,他的返回值是boolean,当你点击“确定”时,返回true,无论你点击“取消”还是右上角的那个“X“关闭,都返回false。

confirm("你好");

prompt弹框:这是一个你可以输入文本内容的弹窗

  • 第一个参数是提示信息,第二个参数是用户输入的默认值。
  • 当你点击确定的时候,返回用户输入的内容。当你点击取消或者关闭的时候,返回null。
prompt("你爱学习吗?","爱");

7.对象

JavaScript 对象是拥有属性和方法的数据

  • 属性是与对象相关的值
  • 方法是能够在对象上执行的动作

定义属性

  • 属性名:属性值

访问属性

  • 对象名.属性名

定义方法

方法名:function(参数列表) {
	//方法体
}

运行方法

  • 对象名.方法名()
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>对象</title>
		<script>
			/*定义一个表示人的对象
			 	属性  "属性名":属性值
			 	方法 "方法名":function(参数列表) {
			 			方法体
			 		}
			 * */
			var person = {
				"name":"zhangsan",
				"age":10,
				"gender":"male",
				"addr":"dxy",
				"walk":function() {
					console.log("person walk.....");
				}
			};
			
			/*
			 * 1.访问对象当中的属性
			 * 		对象名.属性名
			 * 		对象名[属性名]
			 * 2.访问对象当中的方法
			 * 		对象名.方法名()
			 * */
			console.log(person["age"]);
			person.walk();
		</script>
	</head>
	<body>
	</body>
</html>

三.DOM

1.DOM简介

当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model),DOM 模型被构造为对象的树。

image-20210826115734351

通过可编程的对象模型,JavaScript获得了足够的能力来创建动态的HTML

  • JavaScript能够改变页面中的所有HTML属性
  • JavaScript能够对页面中的所有事件做出反应
  • JavaScript能够改变页面中的所有CSS样式

2.操作元素

document对象表示整个html文档,通过document对象可以获取到html文档中的所有内容。

1.向页面输出内容

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>向页面输出内容</title>
		<script>
			//通过document对象向页面输出内容
			document.write("hello world");
		</script>
	</head>
	<body>
	</body>
</html>

2.获取HTML元素

getElememtById('元素ID值');

  • 用的最多,必须记住
  • 该方法返回一个与那个有着给定id属性值的元素节点对应的对象

getElementsByClassName("类名");

  • 可返回一个对象数组,每个对象分别对应着文档里有着给定标签的一个元素。
  • 该方法也只有一个参数,该参数是标签的名字

getElementsByName('元素name值');

getElementsByTagName('标签名称');

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="div1" class="c1">hello div1</div>
<p id="p1">hello</p>
<div name="n1">hello div3</div>
<div name="n1">hello div4</div>
<script>
    let elementById = document.getElementById("div1");
    console.log(elementById);
    let elementById1 = document.getElementById("p1");
    console.log(elementById1);
    console.log("+++++++++++++++++++++++++++++++");
    let elementsByClassName = document.getElementsByClassName("c1");
    for (let elementsByClassNameElement of elementsByClassName) {
        console.log(elementsByClassNameElement);
    }
    console.log("+++++++++++++++++++++++++++++++");
    let elementsByClassName1 = document.getElementsByClassName("n1");
    for (let elementsByClassName1Element of elementsByClassName1) {
        console.log(elementsByClassName1Element);
    }
    console.log("+++++++++++++++++++++++++++++++");
    let elementsByTagName = document.getElementsByTagName("div");
    for (let elementsByTagNameElement of elementsByTagName) {
        console.log(elementsByTagNameElement);
    }
</script>
</body>
</html>

3.普通元素内容操作

获取值

  • var strValue = document.getElementById('元素ID值').innerText;
  • var strValue = document.getElementById('元素ID值').innerHTML;

赋值(显示动态值)

  • document.getElementById('元素ID值').innerText = 动态值;
  • document.getElementById('元素ID值').innerHTML = 动态值;

innerText和innerHTML

  • innerText:只对文本处理
  • innerHTML:可以解析HTML标签
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <div id="div1">Hello world</div>
    <div id="div2">
        Hello HTML
        <span>Hello JS</span>
        Hello CSS
    </div>
    <script>
        let innerText = document.getElementById("div1").innerText;
        console.log(innerText);
        document.getElementById("div1").innerText = "Hello Java";
        console.log(document.getElementById("div2").innerText);
        console.log("++++++++++++++++++++++++++++++++++")
        console.log(document.getElementById("div2").innerHTML);
        document.getElementById("div2").innerHTML = "<a href='https://www.baidu.com'> 百度 </a>"
    </script>
</body>
</html>

4.表单元素内容操作

从元素获取值:var strValue = document.getElementById('表单元素id值').value;

给元素赋值(显示动态值): document.getElementById('表单元素id值').value = 动态值;

注意:从表单元素中获取的值都是字符串类型,如需要数值计算需要进行数据类型转换

  • parseInt
  • parseFloat
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <from action="" method="post">
        用户名 <input type="text" id="username" value="admin" /><br/>
        密码 <input type="password" id="password" value="1234"/> <br>
    </from>

    <script>
        console.log(document.getElementById("username").value);
        console.log(document.getElementById("password").value);
        document.getElementById("username").value = "root";
    </script>
</body>
</html>

5.属性操作

获取属性 getAttribute("属性名");

设置属性 setAttribute("属性名","属性值");

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>元素属性操作</title>
		<style>
			.pclass {
				border: 1px solid black;
				color: yellow;
				text-align: center;
			}
		</style>
		<script>
			/*
			 	元素属性操作
			 	1)获取元素的属性的值
			 		元素对象.getAttribute("属性名");
			 	2)设置元素的属性
			 		元素对象.setAttribute("属性名", "属性值");
			*/
			function init() {
				/*
				 	获取所有p元素的id属性的值并打印
				 * */
				var allp = document.getElementsByTagName("p");
				for(var index = 0; index < allp.length; index++) {
					//获取元素的属性的值
					console.log(allp[index].getAttribute("id"));
					//设置元素的属性
					allp[index].setAttribute("class", "pclass");
				}
			}
		</script>
	</head>
	<body onl oad="init()">
		<p id="p1">这是一个段落1</p>
		<p id="p2">这是一个段落2</p>
	</body>
</html>

6.元素操作

如需向 HTML DOM 添加新元素,您必须首先创建这个元素(元素节点),然后将其追加到已有元素。因为是树结构

createElement()

  • 创建元素节点

appendChild()

  • 把新的子节点添加到指定节点
  • 如需向 HTML DOM 添加新元素,首先必须创建该元素,然后把它追加到已有的元素上
  • 新元素作为父元素的最后一个子元素进行添加

removeChild()

  • 删除子节点

replaceChild()

  • 替换子节点

insertBefore()

  • 在指定的子节点前面插入新的子节点

createTextNode()

  • 创建文本节点

实例:添加一行元素,可以通过每一行的删除按钮删除

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>元素操作</title>
    <style>
        #main {
            margin: 0 auto;/*设置整个盒子居中,一定要设置宽度*/
            width: 500px;
        }

        p {
            text-align: center;/*设置段落中的内容居中*/
        }

        table {
            width: 500px;
            border-collapse: collapse;/*去除边框中间的空白区域*/
        }

        table, tr, td {
            border: 1px solid black;
        }
    </style>
    <script>
        //在表格中添加信息
        function addItem() {
            /*
                 如何为表格添加信息?
                     1.在表格中添加信息,就是添加行;
                     2.行当中要添加单元格
                     3.单元格中添加信息 按钮

                 主要操作
                     1.获取表单中的信息    document.getElementById("id").value  createTextNode()
                     2.创建按钮    createElement()
                     3.创建单元格,在单元格中添加相关内容 createElement() appendChild()
                     4.创建行,在行中添加单元格 createElement() appendChiled()
                     5.将行添加到表格中 appendChild()
             * */
            //创建行
            var line = document.createElement("tr");

            //创建存放姓名的单元格
            var tdName = document.createElement("td");
            //创建一个表示姓名的文本节点
            var txtName = document.createTextNode(document.getElementById("username").value);
            //将表示姓名的文本节点添加到存放姓名的单元格中
            tdName.appendChild(txtName);

            //创建存放年龄的单元格
            var tdAge = document.createElement("td");
            //创建一个表示年龄的文本节点
            var txtAge = document.createTextNode(document.getElementById("age").value);
            //将表示年龄的文本节点添加到存放年龄的单元格中
            tdAge.appendChild(txtAge);

            //创建存放电话的单元格
            var tdTel = document.createElement("td");
            //创建一个表示电话的文本节点
            var txtTel = document.createTextNode(document.getElementById("tel").value);
            //将表示年龄的文本节点添加到存放年龄的单元格中
            tdTel.appendChild(txtTel);

            //创建存放删除按钮的单元格
            var tdDel = document.createElement("td");
            //创建删除按钮
            var btnDel = document.createElement("input");
            //设置按钮的属性
            btnDel.setAttribute("type", "button");
            btnDel.setAttribute("value", "删除");
           // btnDel.onclick = delTem;//为删除按钮绑定单击事件
            //btnDel.setAttribute("onclick","delTem");   不起作用,setAttribute无法访问到父节点
           btnDel.addEventListener("click",delTem);
            //将删除按钮添加到存放删除按钮的单元格中
            tdDel.appendChild(btnDel);

            //将单元格添加到行中
            line.appendChild(tdName);
            line.appendChild(tdAge);
            line.appendChild(tdTel);
            line.appendChild(tdDel);

            //将行添加到表格中
            var tb = document.getElementById("tb1");
            tb.appendChild(line);
        }

        function delTem() {
            /*
                 存在的问题,如何删除按钮所在的行
                     父元素.remove(子元素);
                     table.remove(行)
                     如何获取table
                     如何获取按钮所在的行
                     this 表示调用当前方法的对象
             * */
            var line = this.parentNode.parentNode;
            var tb = this.parentNode.parentNode.parentNode;
            tb.removeChild(line);
        }
    </script>
</head>
<body>
<div id="main">
    <div id="divform">
        <form>
            <p>
                <label>姓名</label>
                <input type="text" id="username" />
            </p>
            <p>
                <label>年龄</label>
                <input type="text" id="age" />
            </p>
            <p>
                <label>电话</label>
                <input type="text" id="tel"/>
            </p>
            <p>
                <button type="button" onclick="addItem()">添加</button>
            </p>
        </form>
    </div>
    <hr/>
    <div id="divtable">
        <table id="tb1">
            <tr>
                <td>姓名</td>
                <td>年龄</td>
                <td>电话</td>
                <td>操作</td>
            </tr>
        </table>
    </div>
</div>
</body>
</html>

3.操作css

HTML DOM允许JavaScript改变HTML元素的样式

document.getElementById(id).style.property=新样式

document.getElementById('元素的id').style.color="red"

document.getElementById('元素的id').style

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>CSS操作</title>
		<style>
			#p1 {
				color: black;
				border: 1px solid black;
				background-color: blue;
			}
		</style>
		<script>
			function test() {
				//设置元素的CSS
				document.getElementById("p1").style.color = "red";
			}
		</script>
	</head>
	<body onl oad="test()">
		<p id="p1">这是一个段落</p>
	</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<style>
    .c1{
        color: yellow;
        border: 2px solid black;
    }
</style>
</body>
    <div id="div1" class="c1">Hello Java</div>
<script>
    document.getElementById("div1").style.color = "red";
</script>
</html>

4.事件驱动

事件:发生在 HTML 元素上的事情

HTML事件列表

  • onclick 鼠标点击某个对象
  • onblur 元素失去焦点
  • onfocus 元素获得焦点
  • onabord 图像加载被中断
  • ondbclick 鼠标双击某个事件
  • onkeydown 某个键盘的键被按下
  • onkeypress 某个键盘的键被按下或按住
  • onmousedown 某个鼠标按键按下
  • onkeyup 某个键盘的键被松开
  • onmousemove 鼠标被移动
  • onmouseout 鼠标从某元素移开
  • onmouseover 鼠标被移到某元素之上
  • onpouseup 某个鼠标按键被松开

在事件发生时,可以执行一些JS代码。

全选反选案例

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>全选案例</title>
    <script>
        /*
             1.实现页面;
             2.确定复选框选中和没有选中如何确定
                 dom对象当中的checked属性
                     |----true 选中
                     |----false    没有选中
             3.分析
                 全选----将所有checkbox的checked熟悉设置为true
                 全不选--将所有checkbox的checked熟悉设置为false
                 反选----对checkbox当前的checked属性取反
         * */
        //       function testCheckBox() {
        //          alert(document.getElementById("test").checked);
        //       }

        /*
             购物车
         * */
        //全选
        function checkAllFun() {
            //找出表示爱好的四个checkbox
            var hobbys = document.getElementsByClassName("hobby");
            //设置每个checkbox的checked为true
            for(var index = 0; index < hobbys.length; index++) {
                hobbys[index].checked = true;
            }
        }
        //全不选
        function checkNoFun() {
            //找出表示爱好的四个checkbox
            var hobbys = document.getElementsByClassName("hobby");
            //设置每个checkbox的checked为false
            for(var index = 0; index < hobbys.length; index++) {
                hobbys[index].checked = false;
            }
        }
        //反选
        function checkOptFun() {
            //找出表示爱好的四个checkbox
            var hobbys = document.getElementsByClassName("hobby");
            //设置每个checkbox的checked为当前checked属性取反之后的值
            for(var index = 0; index < hobbys.length; index++) {
                hobbys[index].checked = !hobbys[index].checked;
            }
        }
        /*
             ArrayList   size()
             int len = list.size();
             for(int index = 0; index < len; index++) {
                 list.get(index);
             }
         *
         * */
        //全选/全不选
        function checkAllOrNot() {
            //找出表示爱好的四个checkbox
            var hobbys = document.getElementsByClassName("hobby");
            //获取表示全选/全不选的checkbox的状态
            //var state = document.getElementById("allOrNot").checked;
            //设置每个checkbox的checked为"全选/全不选"这个复选框的状态
            for(var index = 0; index < hobbys.length; index++) {
                //hobbys[index].checked = state;
                hobbys[index].checked = document.getElementById("allOrNot").checked;
            }
        }
    </script>
</head>
<body>
<form>
    <p>
        你喜欢的运动是?<input id="allOrNot" type="checkbox" onchange="checkAllOrNot()" />全选/全不选
    </p>
    <p>
        <input type="checkbox" class="hobby" />足球
        <input type="checkbox" class="hobby" />篮球
        <input type="checkbox" class="hobby" />乒乓球
        <input type="checkbox" class="hobby" />拳击
    </p>
    <p>
        <button type="button" onclick="checkAllFun()">全选</button>
        <button type="button" onclick="checkNoFun()">全不选</button>
        <button type="button" onclick="checkOptFun()">反选</button>
        <button type="submit">提交</button>
    </p>
</form>
<!--<input id="test" type="checkbox"  />
<input type="button" onclick="testCheckBox()" />-->
</body>
</html>

5.使用DOM操作进行表单验证

概念:在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证

常见验证类型

  • 非空验证
  • 内容验证
    • 长度验证
    • 内容格式验证(正则表达式)

非空验证案例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--
    onsubmit 当表单提交时运行脚本
-->
<form action="http://www.baidu.com" method="post" onsubmit=" return judgeAll()">
    <table>
        <tr>
            <td>
                <label>账号</label>
            </td>
            <td>
                <input type="text" id="username" placeholder="请输入账号" onblur="judgeNull('username','usernameInfo','账号不能为空')" onfocus="clearInfo('usernameInfo')"/>
            </td>
            <td>
                <span id="usernameInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>密码</label>
            </td>
            <td>
                <input type="password" id="password"  placeholder="请输入密码" onblur="judgeNull('password','passwordInfo','密码不能为空')" onfocus="clearInfo('passwordInfo')"/>
            </td>
            <td>
                <span id="passwordInfo"></span>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <button type="submit">登录</button>
            </td>
        </tr>
    </table>

    <script>
        //非空验证
        function judgeNull(id,infoId,msg){
            if (document.getElementById(id).value === ""){
               document.getElementById(infoId).innerText = msg;
               return false;
            }
            return true;
        }

        //清除记录
        function clearInfo(infoId){
            document.getElementById(infoId).innerText = "";
        }

        //判断都不为空
        function judgeAll(){
            if(judgeNull('username','usernameInfo','账号不能为空') === false){
                return false;
            }

            if(judgeNull('password','passwordInfo','密码不能为空') === false){
                return false;
            }

        }
    </script>
</form>
</body>
</html>

6.正则表达式

//正则表达式 长度是6-10位 只能包含数字
let reg = /^[0-9]{6,10}$/; //规则,^$代表从开头到结尾,^开头元素 $结尾元素 []代表范围 {}代表长度
let str1 = "12344500";
let str2 = "1234456";
let str3 = "a1234456";
console.log(reg.test(str1));
console.log(reg.test(str2));
console.log(reg.test(str3));

概念:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串

语法格式

  • 元字符

    • . 匹配除换行符以外的任意字符
    • \w匹配字母或数字或下划线
    • \s匹配任意的空白符
    • \d匹配数字
    • \b匹配单词的开始或结束
    • ^匹配字符串的开始
    • $匹配字符串的结束
  • 重复次数

    • *重复零次或更多次

    • +重复一次或更多次

    • ?重复零次或一次

    • {n}重复n次

    • {n,}重复n次或更多次

    • {n,m}重复n到m次

  • 字符转义:如果你想查找元字符本身的话,比如你查找.或者*,就出现了问题,你没办法指定它们,因为它们会被解释成别的意思。这时你就得使用\来取消这些字符的特殊意义。因此,你应该使用\*。当然,要查找\本身,你也得用\\

如何在JavaScript中使用

  • var reg=表达式;
  • reg.test(相关变量);
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>正则表达式</title>
		<script>
			/*
			 	目前校验存在的问题
			 		用户名:6~10位字母、数字,第一个字符必须是字母
			 			1)判断长度
			 			2)判断第一个字符是否为字母
			 			3)判断每个字符是否都是字母或者数字
			 		密码:6~10位数字
			 	正则表达式:使用单个字符串来描述、匹配一系列符合某个句法规则的字符串
			 		|----理解为一个特殊字符串
			 		|----描述了一系列的规则
			 		|----正则表达式不是JavaScript特有的
			 	如何使用正则表达式
			 		var reg = 正则表达式;
			 		reg.test("被判断的字符串");
			 			|----true被判断的字符串通过了校验
			 			|----false被判断的字符串没有通过校验
			 	如何写正则表达式-----正则表达式的书写规则
			 		^	匹配字符串的开始
			 		$	匹配字符串的结尾
			 		[]	匹配一个字符(不管方括号中有多少内容)
			 		
			 		{n} 表示n位
			 		{n,} 最少n位
			 		{n,m} n~m位
			 		* 0次或多次
			 		+ 1次或多次
			 		? 0次或1次
			 		
			 		\w 字母数字下划线
			 		\d 数字
			 * */
			var reg1 = /^[0-9]$/;//0-9 单个字符
			console.log(reg1.test("a"));//false
			console.log(reg1.test("1"));//true
			console.log(reg1.test("1111"));//false
			var reg2 = /^[0-9]{6}$/;//6位数字
			console.log(reg2.test("123456777"));
			var reg3 = /^[0-9]*$/;//0次或多次
			console.log(reg3.test("h"));
			var reg4 = /^[0-9]+$/;//1次或多次
			console.log(reg4.test("1111"));
			var reg5 = /^[0-9]?$/;//0次或1次
			console.log(reg5.test("11"));
			var reg6 = /^[0-9a-zA-Z]{6,10}$/;
			console.log(reg6.test("a12345"));
			var reg7 = /^[\w]{6,10}$/;//6~10位字母数字下划线
			console.log(reg7.test("abcd_1"));
			var reg8 = /^[\d]{6,10}$/;//6~10位数字
			console.log(reg8.test("88888"));
		</script>
	</head>
	<body>
	</body>
</html>

7.使用正则表达式完成表单验证的内容验证

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://www.baidu.com" method="post" onsubmit="return checkAll();">
    <table>

        <tr>
            <td>
                <label>账号</label>
            </td>
            <td>
                <input type="text" id="username" placeholder="请输入账号" autofocus="autofocus"  onblur="checkInfo('username', 'usernameInfo',/^[a-zA-Z][\w]{5,9}$/,'6~10位字母、数字、下划线,第一个字符必须是字母')" onfocus="clearInfo('usernameInfo')" />
            </td>
            <td>
                <span id="usernameInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>密码</label>
            </td>
            <td>
                <input type="password" id="password" placeholder="请输入密码" onblur="checkInfo('password', 'passwordInfo',/^[\d]{6,10}$/,'6~10位数字')" onfocus="clearInfo('passwordInfo')" />
            </td>
            <td>
                <span id="passwordInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>重复密码</label>
            </td>
            <td>
                <input type="password" id="passwordAgain" placeholder="请重复输入密码" onblur="checkPasswordAgain('password', 'passwordAgain', 'passwordAgainInfo','两次密码不一致')" onfocus="clearInfo('passwordAgainInfo')" />
            </td>
            <td>
                <span id="passwordAgainInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>邮箱</label>
            </td>
            <td>
                <input type="text" id="email" placeholder="请输入电子邮箱" onblur="checkInfo('email', 'emailInfo',/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/,'邮箱格式不正确')" onfocus="clearInfo('emailInfo')" />
            </td>
            <td>
                <span id="emailInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>手机号</label>
            </td>
            <td>
                <input type="text" id="tel" placeholder="请输入手机号" onblur="checkInfo('tel', 'telInfo',/^\d{11}$/,'手机号格式不正确')" onfocus="clearInfo('telInfo')"/>
            </td>
            <td>
                <span id="telInfo"></span>
            </td>
        </tr>
        <tr>
            <td>
                <label>qq</label>
            </td>
            <td>
                <input type="text" id="qq" placeholder="请输入qq" onblur="checkInfo('qq', 'qqInfo',/[1-9][0-9]{4,}/,'QQ号格式不正确')" onfocus="clearInfo('qqInfo')"/>
            </td>
            <td>
                <span id="qqInfo"></span>
            </td>
        </tr>
        <tr>
            <td colspan="3">
                <button type="submit">注册</button>
            </td>
        </tr>
    </table>
</form>
<script>
    /*
            账号:6~10位字母、数字、下划线,第一个字符必须是字母
               /^[a-zA-Z][\w]{5,9}$/
            密码:6~10位数字
               /^[\d]{6,10}$/
          * */
    //检验内容
    function checkInfo(ID,infoID,jug,msg){
        let str = document.getElementById(ID).value;
        if(!jug.test(str)){
            document.getElementById(infoID).innerText = msg;
            return false;
        }
    }

    //清除提示
    function clearInfo(infoID){
        document.getElementById(infoID).innerText = "";
    }

    //检查重复密码
    function checkPasswordAgain(oldPasswordID,ID,infoID,msg){
        let str = document.getElementById(ID).value;
        if(str !== document.getElementById(oldPasswordID).value){
           document.getElementById(infoID).innerText = msg;
           return false;
        }
    }

    //检测全部元素
    function checkAll(){
        if(checkInfo('username', 'usernameInfo',/^[a-zA-Z][\w]{5,9}$/,'6~10位字母、数字、下划线,第一个字符必须是字母') === false
            || checkInfo('password', 'passwordInfo',/^[\d]{6,10}$/,'6~10位数字') === false
            || checkInfo('tel', 'telInfo',/^\d{11}$/,'手机号格式不正确' )===false
                || checkInfo('qq', 'qqInfo',/[1-9][0-9]{4,}/,'QQ号格式不正确')=== false
                ||checkPasswordAgain('password', 'passwordAgain', 'passwordAgainInfo','两次密码不一致') === false){
            alert("输入的信息有误,请核对后输入")
            return false;
        }
        return true;
    }
</script>
</body>
</html>

四.BOM

1.window

  • 所有浏览器都支持 window 对象。它表示浏览器窗口。

  • 所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。

  • 全局变量是 window 对象的属性。

  • 全局函数是 window 对象的方法。

  • 甚至 HTML DOM 的 document 也是 window 对象的属性之一。

  • window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。

  • window.location 对象在编写时可不使用 window 这个前缀。 一些例子:

    • location.hostname 返回 web 主机的域名
    • location.pathname 返回当前页面的路径和文件名
    • location.port 返回 web 主机的端口 (80 或 443)
    • location.protocol 返回所使用的 web 协议(http:// 或 https://)
    • location.href 属性返回当前页面的 URL 十分重要
    • location.assign() 方法加载新的文档

2.JavaScript定时器

  • 定义定时器:
    • setInterval('调用函数',毫秒时间):每间隔固定毫秒值就执行一次函数
    • setTimeout('调用函数',毫秒时间):在固定时间之后执行一次调用函数
  • 关闭定时器:
    • clearInterval(定时器名称)
    • clearTimeout(定时器名称)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>操作CSS</title>
    <script>
        var timeout = setTimeout(function () {
            console.log("***************");
        }, 2000);
    </script>
</head>
<body>
    <button type="button" onclick="clearTimeout(timeout)">click</button>
</body>
</html>

显示时间案例

<html>
 <head>
  <title>HTML示例</title>
  <style type="text/css">

  </style>
 </head>
 <body>
	<div id="times">

	</div>
	<script type="text/javascript">
		function getD1() {
			//当前时间
			var date = new Date();
			//格式化
			var d1 = date.toLocaleString();
			//获取div
			var div1 = document.getElementById("times");
			div1.innerHTML = d1;
		}

		//使用定时器实现每一秒写一次时间
		setInterval("getD1();",1000);
		
	</script>

 </body>
</html>

标签:03,元素,console,log,JavaScript,getElementById,var,document
From: https://www.cnblogs.com/AaaalexQaQ/p/17581139.html

相关文章

  • Codeforces 1852A Ntarsis' Set 题解
    题目传送门:Codeforces1852ANtarsis'Set题意给定一个集合,里面初始有\(1,2,3...10^{1000}\),告诉你每天会拿掉其中的第\(a_1,a_2,a_3...a_n\)个,询问这样的\(k\)天之后剩下的最小的数是多少。分析思考如果\(x\)在这天没有被删掉,那么哪些被删掉的位置会对它产生什么......
  • unable to access 'https://git.oak.net.cn/pigsales/frontend/ai-sales.git/': F
    Git远程仓库无法访问的问题及解决方法在使用Git进行协作开发时,我们经常会遇到无法访问远程仓库的问题。本文将介绍一种常见的错误信息:“unabletoaccess'F”,并提供解决方法。错误信息分析错误信息中的“unabletoaccess”表示无法访问,后面的URL是远程仓库的地址。而最后的“......
  • javascript中的arguments
    在JavaScript中,arguments 是在每个函数中自动可用的特殊变量。它们表示调用函数时传递给函数的值。术语“arguments ”既指传递到函数中的实际值,也指用于在函数内访问这些值的机制。 JavaScript函数可以接受任意数量的参数,这意味着调用函数时可以传递零个、一个、两个或......
  • HDU4738 Caocao's Bridges
    \(HDU4738\)\(Caocao\)'\(s\)\(Bridges\)一、题目描述曹操在长江上建立了一些点,点之间有一些边连着。如果这些点构成的无向图变成了连通图,那么曹操就无敌了。刘备为了防止曹操变得无敌,就打算去摧毁连接曹操的点的桥。但是诸葛亮把所有炸弹都带走了,只留下一枚给刘备。所以刘......
  • /tmp/ccVJLYWf.s:589: Error: selected processor does not support `cpsid i' in ARM
    linux20@ubuntu:~/Desktop/new$arm-none-eabi-gcc-cec_main.c/tmp/ccVJLYWf.s:Assemblermessages:/tmp/ccVJLYWf.s:589:Error:selectedprocessordoesnotsupport`cpsidi'inARMmode编译时遇到这个问题应该如何解决这个错误信息表明您的代码中使用了cpsidi指令,但......
  • 03-docker常用命令
    1.dockerps-a:显示运行后的容器,使用-a则显示全部,不使用-a只显示成功运行2.dockerrmi镜像名/镜像ID:删除镜像文件3.dockerstop容器名/容器ID:停止正在运行的容器4.dockerrm容器名/容器ID:删除停止的容器5.dockerlogs容器名:查看运行容器的运行日志6.dockerstart容......
  • Python的OCR工具pytesseract解决TesseractNotFoundError: tesseract is not installed
    pytesseract是基于Python的OCR工具,底层使用的是Google的Tesseract-OCR引擎,支持识别图片中的文字,支持jpeg,png,gif,bmp,tiff等图片格式。如何安装使用请看我的上一篇。在使用pytesseract打开图片是遇到没有找到文件解决pytesseract.pytesseract.TesseractNotFoundError:te......
  • JavaScript 中的Promise学习
     代码示例:<scripttype="text/javascript">newPromise(function(resolve,reject){console.log(111);resolve(222);}).then(function(value){console.log(value);......
  • 题解 P2903 【[USACO08MAR]The Loathesome Hay Baler S】
    postedon2021-05-0320:50:49|under题解|source首先输入,记录一下哪个齿轮的位置在\((0,0)\),哪个在\((x_t,y_t)\)。接着,为了避免多次判断两个齿轮相切而超时,我们可以预处理一个\(link_{i,j}\),表示第\(i\)个齿轮是否和第\(j\)个齿轮相切。这部分直接\(O(n^2)\)暴......
  • Cloud Ace 成为 Google Cloud Next '23 联合赞助商
    CloudAce是谷歌云全球战略合作伙伴,拥有300多名工程师,也是谷歌最高级别合作伙伴,多次获得GoogleCloud合作伙伴奖。作为谷歌托管服务商,我们提供谷歌云、谷歌地图、谷歌办公套件、谷歌云认证培训服务。CloudAce,Inc.(总部位于东京千代田区;总裁青木诚;以下简称“CloudAce”)将成......