JavaScript
2021/8/15 22:05:47
本文主要是介绍JavaScript,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JavaScript
一、JS基础
1.JS简介
1.1. 什么是JS
-
JS,全称JavaScript,是一种直译式脚本语言,是一种动态类型、弱类型、基于对象的脚本语言,内置支持类型。
-
JS语言和Java语言对比:
对比 | Java | JS |
---|---|---|
运行环境 | JVM虚拟机 | JS引擎,是浏览器的一部分 |
是否跨平台运行 | 跨平台 | 跨平台 |
语言类型 | 强类型语言 | 弱类型,动态类型语言 |
是否需要编译 | 需要编译,是编译型语言 | 不需要编译,是解释型语言 |
是否区分大小写 | 区分大小写 | 区分大小写 |
1.2 JS的作用
具体来说,有两部分作用:
-
JS代码可以操作浏览器(BOM):进行网址跳转、历史记录切换、浏览器弹窗等等
-
JS代码可以操作网页(DOM):操作HTML的标签、标签的属性、样式、文本等等
注意:JS的是在浏览器内存中运行时操作,并不会修改网页源码,所以刷新页面后网页会还原
1.3 JS的组成
- ECMAScript(核心):是JS的基本语法规范
- BOM:Browser Object Model,浏览器对象模型,提供了与浏览器进行交互的方法
- DOM:Document Object Model,文档对象模型,提供了操作网页的方法
1.4. 小结
- JS的概念:JS是一门运行在浏览器的,解释型的、基于对象的脚本语言
- JS的作用:处理用户和前端页面的交互
- 操作浏览器
- 操作HTML页面的标签、属性、文本、样式等等
- JS的组成部分:
- ECMAScript:基本语法
- BOM:浏览器对象模型,操作浏览器的代码
- DOM:文档对象模型,操作HTML文档的方法
2.JS引入
2.1. 内部JS
2.1.1语法
- 在html里增加
<script>
标签,把js代码写在标签体里
<script> //在这里写js代码 </script>
3.1.2示例
- 创建html页面,编写js代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js引入方式-内部js</title> <script> //操作浏览器弹窗 alert("hello, world"); </script> </head> <body> </body> </html>
- 打开页面,浏览器会弹窗
2.2. 外部JS
2.2.1语法
- 把js代码写在单独的js文件中,js文件后缀名是
.js
- 在HTML里使用
<script>
标签引入外部js文件
<script src="js文件的路径"></script>
2.2.2示例
-
创建一个
my.js
文件,编写js代码- 第1步:创建js文件
- 第2步:设置js文件名称
- 第3步:编写js代码
alert("hello, world! 来自my.js");
- 创建一个html,引入
my.js
文件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js引入方式-外部js</title> <!--引入外部的my.js文件--> <script src="../js/my.js"></script> </head> <body> </body> </html>
- 打开页面,浏览器会弹窗
2.4.小结
2.4.1语法
- 内部脚本
<script> //js代码 </script>
-
外部脚本
- 定义一个js文件
- 通过script标签引入
<script src="js文件路径"> </script>
2.4.2注意事项
-
一个
script
标签,不能既引入外部js文件,又在标签体内写js代码。- 错误演示
<script src="../js/my.js"> alert("hello"); </script>
- 正确演示
<script src="../js/my.js"></script> <script> alert("hello"); </script>
3.JS基本语法
3.1 变量
- JavaScript 是一种弱类型语言,javascript的变量类型由它的值来决定。 定义变量需要用关键字 ‘var’或者’let’
int i = 10; var i = 10; 或者 i = 10; String a = "哈哈"; let str = "哈哈"; 或者 str = "哈哈"; 或者 str = "哈哈" ... 注意: 1.var或者可以省略不写,建议保留 2.最后一个分号可以省略,建议保留 3.同时定义多个变量可以用","隔开,公用一个‘var’关键字. var c = 45,d='qwe',f='68';
3.2 数据类型
1.五种原始数据类型
数据类型 | 描述 | 示例 |
---|---|---|
number | 数值类型 | 1 , 2 , 3 , 3.14 |
boolean | 布尔类型 | true , false |
string | 字符串类型 | "hello" , ‘hello’ |
object | 对象类型 | new Date() , null |
undefined | 未定义类型 | var a; |
2.typeof操作符
-
作用: 用来判断变量是什么类型
-
写法:typeof(变量名) 或 typeof 变量名
-
null与undefined的区别:
null: 对象类型,已经知道了数据类型,但对象为空。
undefined:未定义的类型,并不知道是什么数据类型。
3.小练习
- 定义不同的变量,输出类型,
- 代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script type="text/javascript"> var i = 5; //整数 var f = 3.14; //浮点 var b = true; //布尔 var c = 'a'; //字符串 var str = "abc"; //字符串 var d = new Date(); //日期 var u; //未定义类型 var n = null; //空 document.write("整数:" + typeof(i) + "<br/>"); document.write("浮点 :" + typeof(f) + "<br/>"); document.write("布尔:" + typeof(b) + "<br/>"); document.write("字符:" + typeof(c) + "<br/>"); document.write("字符串:" + typeof(str) + "<br/>"); document.write("日期:" + typeof(d) + "<br/>"); document.write("未定义的类型:" + typeof(u) + "<br/>"); document.write("null:" + typeof(n) + "<br/>"); </script> </body> </html>
字符串转换成数字类型
- 全局函数(方法),就是可以在JS中任何的地方直接使用的函数,不用导入对象。不属于任何一个对象
3.3 运算符
- 关系运算符:> >= < <=
- number类型和字符串做-,*,/的时候,字符串自动的进行类型转换,前提字符串里面的数值要满足number类型
var i = 3; var j = "6"; alert(j-i);//结果是3, "6" ==> 6 alert(j*i);//结果是18, alert(j/i);//结果是2,
- 除法,保留小数
var i = 2; var j = 5; alert(j/i);
==
比较数值,===
比较数值和类型
var i = 2; var j = "2"; alert(i==j); // ==比较的仅仅是数值, true alert(i===j); // ===比较的是数值和类型.false
3.4语句
- for循环
<script> //将数据装到表格中 document.write("<table border='1' cellspacing='0' width='900px'>") for(let j=1;j<=9;j++){ //一行 document.write("<tr>") for(let i=1;i<=j;i++){ //一个单元格 document.write("<td>") //每一个乘法表达式就是td中的内容 document.write(j+"x"+i+"="+(j*i)) document.write("</td>") } document.write("</tr>") } document.write("</table>") </script>
- if… else
var a = 6; if(a==1) { alert('语文'); } else if(a==2) { alert('数学'); } else { alert('不补习'); }
- switch
<script> var str = "java"; switch (str){ case "java": alert("java"); break; case "C++": alert("C++"); break; case "Android": alert("Android"); break; } </script>
3.4.小结
- 变量通过
var
定义 - 数据类型
- number
- boolean
- string
- object
- undefined
- 运算符
- 字符串可以和number类型进行-,*,/运算的
- 除法保留小数
- == 比较的是值, ===比较的是值和类型
- 语句: 基本和java一样
4.函数(重点)
4.1. 什么是函数
- 函数: 是被设计为执行特定任务的代码块 ,在被调用时会执行
- 函数类似于Java里的方法,用于封装一些可重复使用的代码块
4.2. 普通(有名)函数
4.2.1语法
- 定义普通函数
function 函数名(形参列表){ 函数体 [return 返回值;] }
- 调用普通函数
var result = 函数名(实参列表);
4.2.2示例
- 计算两个数字之和
<script> //js的函数的作用:为了封装代码,在要使用这些代码的地方直接调用函数 //js的函数的声明方式:1. 普通函数(命名函数) 2.匿名函数 //普通函数: function 函数名(参数名,参数名...){函数体},函数没有返回值类型,没有参数类型 function total(a,b,c) { console.log("arguments数组中的数据:"+arguments.length) console.log(a+","+b+","+c) return a+b+c } //调用函数 //var num = total(1,2,3); //console.log(num) //js的函数还有俩特点:1. 函数声明时候的参数个数和函数调用时候传入的参数个数,可以不一致;因为函数内部有一个arguments数组,用于存放传入的参数 //2. js的函数是没有重载的,同名函数后面的会覆盖前面的 function total(a,b) { return a+b } var num = total(1,2,3); console.log(num) </script>
4.3匿名函数
匿名函数,也叫回调函数,类似于Java里的函数式接口里的方法
function(形参列表){ 函数体 [return 返回值;] }
4.4小结
-
语法
- 普通(有名)函数
function 函数名(参数列表){ 函数体 [return ...] }
- 匿名函数
function(参数列表){ 函数体 [return ...] }
-
特点
- 参数列表里面直接写参数的变量名, 不写var
- 函数没有重载的, 后面的直接把前面的覆盖了
5.JS事件(很重点)
5.1. 事件介绍
- HTML 事件是发生在 HTML 元素上的“事情”, 是浏览器或用户做的某些事情
- 事件通常与函数配合使用,这样就可以通过发生的事件来驱动函数执行。
5.2 常见事件
属性 | 此事件发生在何时… |
---|---|
onclick | 当用户点击某个对象时调用的事件句柄。 |
ondblclick | 当用户双击某个对象时调用的事件句柄。 |
onchange | 域的内容被改变。 |
onblur | 元素失去焦点。 |
onfocus | 元素获得焦点。 |
onload | 一张页面或一幅图像完成加载。 |
onsubmit | 确认按钮被点击;表单被提交。 |
onkeydown | 某个键盘按键被按下。 |
onkeypress | 某个键盘按键被按住。 |
onkeyup | 某个键盘按键被松开。 |
onmousedown | 鼠标按钮被按下。 |
onmouseup | 鼠标按键被松开。 |
onmouseout | 鼠标从某元素移开。 |
omouseover | 鼠标移到某元素之上。 |
onmousemove | 鼠标被移动。 |
5.3. 事件绑定
5.3.1普通函数方式
说白了设置标签的属性
<标签 属性="js代码,调用函数"></标签>
5.3.2匿名函数方式
<script> 标签对象.事件属性 = function(){ //执行一段代码 } </script>
5.4事件使用
5.4.1重要的事件
-
点击事件
需求: 没点击一次按钮 弹出hello…
<input type="button" value="按钮" onclick="fn1()"> <input type="button" value="另一个按钮" id="btn"> <script> //当点击的时候要调用的函数 function fn1() { alert("我被点击了...") } //给另外一个按钮,绑定点击事件: //1.先根据id获取标签 let btn = document.getElementById("btn"); //2. 设置btn的onclick属性(绑定事件) //绑定命名函数 //btn.onclick = fn1 //绑定匿名函数 btn.onclick = function () { console.log("点击了另外一个按钮") } </script>
-
获得焦点(onfocus)和失去焦点(onblur)
需求:给输入框设置获得和失去焦点
var ipt = document.getElementById("ipt"); //绑定获取焦点事件 ipt.onfocus = function () { console.log("获取焦点了...") } //绑定失去焦点事件 ipt.onblur = function () { console.log("失去焦点了...") }
-
内容改变(onchange)
需求: 给select设置内容改变事件
<body> <!--内容改变(onchange)--> <select onchange="changeCity(this)"> <option value="bj">北京</option> <option value="sh">上海</option> <option value="sz">深圳</option> </select> </body> <script> function changeCity(obj) { console.log("城市改变了"+obj.value); } </script>
- 等xx加载完成(onload) 可以把script放在body的后面/下面, 就可以不用了
window.onload = function () { //浏览器窗体加载完毕之后要执行的代码写到这里面 }
5.4.2掌握的事件
- 键盘相关的, 键盘按下(onkeydown) 键盘抬起(onkeyup)
//给输入框绑定键盘按键按下和抬起事件 ipt.onkeydown = function () { //当按键按下的时候,数据并没有到达输入框 //输出输入框里面的内容 //console.log(ipt.value) } ipt.onkeyup = function () { //输出输入框的内容:当键盘按键抬起的时候,数据已经到达了输入框 console.log(ipt.value) }
- 鼠标相关的, 鼠标在xx之上(onmouseover ), 鼠标按下(onmousedown),鼠标离开(onmouseout)
//给输入框绑定鼠标移入事件 ipt.onmouseover = function () { console.log("鼠标移入了...") } //给输入框绑定鼠标移出事件 ipt.onmouseout = function () { console.log("鼠标移出了...") }
5.4.小结
1. 绑定事件的方式: 1. 通过在标签上设置标签的属性,进行绑定,也就是通过命名函数(普通函数)进行绑定 2. 通过js代码获取到标签,然后设置标签的属性进行绑定,也就是通过匿名函数绑定事件 2. JS的常见的事件介绍: 1. onclick 2. ondblclick 3. onm ouseover 4. onm ouseout 5. onfocus 获取焦点 6. onblur 失去焦点
6.正则表达式(了解)
6.1正则表达式概述
正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。
用我们自己的话来说: 正则表达式用来校验字符串是否满足一定的规则的公式
6.2 正则表达式的语法
6.2.1创建对象
- 对象形式:
var reg = new RegExp("正则表达式")
当正则表达式中有"/"那么就使用这种 - 直接量形式:
var reg = /正则表达式/
一般使用这种声明方式
6.2.2常用方法
方法 | 描述 | 参数 | 返回值 |
---|---|---|---|
test(string) | 校验字符串的格式 | 要校验的字符串 | boolean,校验通过返回true |
6.2.3常见正则表达式规则
符号 | 作用 |
---|---|
\d | 数字 |
\D | 非数字 |
\w | 英文字符:a-zA-Z0-9_ |
\W | 非英文字符 |
. | 通配符,匹配任意字符 |
{n} | 匹配n次 |
{n,} | 大于或等于n次 |
{n,m} | 在n次和m次之间 |
+ | 1~n次 |
* | 0~n次 |
? | 0~1次 |
^ | 匹配开头 |
$ | 匹配结尾 |
[a-zA-Z] | 英文字母 |
[a-zA-Z0-9] | 英文字母和数字 |
[xyz] | 字符集合, 匹配所包含的任意一个字符 |
6.3使用示例
需求:
- 出现任意数字3次
- 只能是英文字母的, 出现6~10次之间
- 只能由英文字母和数字组成,长度为4~16个字符,并且以英文字母开头
- 手机号码: 以1开头, 第二位是3,4,5,6,7,8,9的11位数字
步骤:
- 创建正则表达式
- 调用test()方法
<script> //1.出现任意数字3次 //a. 创建正则表达式 var reg1 = /^\d{3}$/; //出现任意数字3次 //b. 校验字符串 var str1 = "3451"; var flag1 = reg1.test(str1); //alert("flag1="+flag1); //2.只能是英文字母的, 出现6~10次之间 var reg2 =/^[a-zA-Z]{6,10}$/; var str2 = "abcdef11g"; //alert(reg2.test(str2)); //3 用户名:只能由英文字母和数字组成,长度为4~16个字符,并且以英文字母开头 var reg3 =/^[a-zA-Z][a-zA-Z0-9]{3,15}$/; var str3 = "zs"; // alert(reg3.test(str3)); //4. 手机号码: 以1开头, 第二位是3,4,5,6,7,8,9的11位数字 //var reg4 =/^1[3456789]\d{9}$/i; //忽略大小写的 var reg4 =/^1[3456789]\d{9}$/; //不忽略大小写的 var str4 = "188245899"; alert(reg4.test(str4)); </script>
6.4.小结
- 正则概念: 就是用来校验字符串的规则
- 正则使用步骤
- 创建正则表达式对象
- 调用test()方法
7.内置对象之Array数组(了解)
7.1 创建数组对象
7.1.1语法
var arr = new Array(size)
var arr = new Array(element1, element2, element3, ...)
var arr = [element1, element2, element3, ...];
一般采用这种方式创建
7.1.2数组的特点
- 数组中的每个元素可以是任意类型
- 数组的长度是可变的,更加类似于Java里的集合
List
7.1.3示例
- 创建数组,并把数组输出到浏览器控制台上
- 说明:把数据输出到控制台:
console.log(value)
- 说明:把数据输出到控制台:
//1.数组定义方式 //1.1 方式一 new Array(size); var array01 = new Array(4); array01[0] = 1; array01[1] = 2; array01[2] = 3; array01[3] = 99; //1.2 方式二 new Array(ele,ele...); var array02 = new Array(1, 2, 3, 99); //1.3 方式三 [ele,ele] var array03 = [1, 2, 3, 99]; //2.数组特点 ①js里面数组可以存放不同类型的数据 ②js里面的数组可变, 没有越界的概念 var array04 = [1, 2, 3, "哈哈"]; //console.log(array04[0]); //1 //console.log(array04[3]); //"哈哈" //console.log(array04[5]); //在Java里面是数组越界 js里面是undefined console.log(array04.length); //4 array04[6] = "你好"; //[1,2,3,"哈哈",undefined,undefined,"你好"] console.log(array04.length); //7
7.2数组常见的方法
7.2.1API介绍
方法 | 描述 |
---|---|
concat() | 连接两个或更多的数组,并返回结果。 |
join() | 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 |
reverse() | 颠倒数组中元素的顺序。 |
7.2.2示例
//3.常用的方法 //3.1 concat() 连接两个或更多的数组,并返回结果。【重点】 var array05 = [1, 2, 3, 4]; var array06 = ["哈哈", "你好", 100, 200]; var array07 = array05.concat(array06); console.log(array07); //3.2 join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 var str = array05.join("**"); console.log(str); //3.3 reverse() 颠倒数组中元素的顺序。 array06 = array06.reverse(); console.log(array06);
7.3二维数组
- 数组里面再放数组 就是二维数组
- 示例
//4.二维数组 //方式一: var citys = new Array(3); citys[0] = ["深圳", "广州", "东莞", "惠州"]; citys[1] = ["武汉", "黄冈", "黄石", "鄂州", "荆州"]; citys[2] = ["济南", "青岛", "烟台", "淄博", "聊城"]; var citys02 = [ ["深圳", "广州", "东莞", "惠州"], ["武汉", "黄冈", "黄石", "鄂州", "荆州"], ["济南", "青岛", "烟台", "淄博", "聊城"] ]; for (var i = 0; i < citys02.length; i++) { var cityArray = citys02[i]; console.log(cityArray); for(var j = 0;j<=cityArray.length;j++){ console.log(cityArray[j]); } }
7.4.小结
- 数组定义语法
var array = new Array(size); //定义了没有赋值 var array = new Array(ele,ele,ele); //定义了并且赋值了 var array = [ele,ele,ele]; //定义了并且赋值了
- 数组的特点
- js的数组里面可以存放不同类型的数据
- js的数组的长度可变
- 数组常用的方法
- 数组.concat(数组) 把2个,多个拼接成一个数组==
- 数组.join(分隔符) 把数组里面的元素拼接成一个字符串
- 数组.reverse() 反转
- 二维数组
- 数组里面的元素也是数组
8.内置对象之-Date日期(了解)
8.1. 创建日期对象
8.1.1语法
-
创建当前日期:
var date = new Date()
-
创建指定日期:
var date = new Date(年, 月, 日)
注意:月从0开始,0表示1月
-
创建指定日期时间:
var date = new Date(年, 月, 日, 时, 分, 秒)
注意:月从0开始,0表示1月
8.1.2示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>日期</title> </head> <body> <script> //创建当前日期 var date1 = new Date(); console.log(date1); //创建指定日期: 2019-11-11 var date2 = new Date(2019, 10, 11); console.log(date2); //创建指定日期时间:2019-11-11 20:10:10 var date3 = new Date(2019, 10, 11, 20, 10, 10); console.log(date3); </script> </body> </html>
8.2. 日期常用方法
8.2.1API介绍
方法 | 描述 |
---|---|
Date() | 返回当日的日期和时间。 |
getDate() | 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 |
getDay() | 从 Date 对象返回一周中的某一天 (0 ~ 6)。 |
getMonth() | 从 Date 对象返回月份 (0 ~ 11)。 |
getFullYear() | 从 Date 对象以四位数字返回年份。 |
getHours() | 返回 Date 对象的小时 (0 ~ 23)。 |
getMinutes() | 返回 Date 对象的分钟 (0 ~ 59)。 |
getSeconds() | 返回 Date 对象的秒数 (0 ~ 59)。 |
getMilliseconds() | 返回 Date 对象的毫秒(0 ~ 999)。 |
getTime() | 返回 1970 年 1 月 1 日至今的毫秒数(时间戳)。 |
parse() | 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 |
setDate() | 设置 Date 对象中月的某一天 (1 ~ 31)。 |
setMonth() | 设置 Date 对象中月份 (0 ~ 11)。 |
setFullYear() | 设置 Date 对象中的年份(四位数字)。 |
setYear() | 请使用 setFullYear() 方法代替。 |
setHours() | 设置 Date 对象中的小时 (0 ~ 23)。 |
setMinutes() | 设置 Date 对象中的分钟 (0 ~ 59)。 |
setSeconds() | 设置 Date 对象中的秒钟 (0 ~ 59)。 |
setMilliseconds() | 设置 Date 对象中的毫秒 (0 ~ 999)。 |
setTime() | 以毫秒设置 Date 对象。 |
toLocaleString() | 根据本地时间格式,把 Date 对象转换为字符串。 |
二、JS的BOM
1概述
Browser Object Model ,浏览器对象模型. 为了便于对浏览器的操作,JavaScript封装了浏览器中各个对象,使得开发者可以方便的操作浏览器中的各个对象。
2.BOM里面的五个对象
2.1 window: 窗体对象
方法 | 作用 |
---|---|
alert() | 显示带有一段消息和一个确认按钮的警告框 |
confirm() | 显示带有一段消息以及确认按钮和取消按钮的对话框 |
prompt() | 弹出输入框 |
setInterval(‘函数名()’,time) | 按照指定的周期(以毫秒计)来调用函数或计算表达式 |
setTimeout(‘函数名()’,time) | 在指定的毫秒数后调用函数或计算表达式 |
clearInterval() | 取消由 setInterval() 设置的 Interval()。 |
clearTimeout() | 取消由 setTimeout() 方法设置的 timeout。 |
//1. 警告框 //window.alert("hello") //2. 确认框 /*let flag = confirm("你确定要删除吗?"); console.log(flag)*/ //3. 输入框 let age = prompt("请输入你的年龄"); if (parseInt(age) >= 18) { alert("可以访问") }else { alert("请大一点了再访问") } //定时器的话就是隔一段事件执行一个任务 //1. setTimeout(),只执行一次的定时器,其实也就相当于一个延时器 //第一个参数是要执行的匿名函数,第二个参数是执行时间 /*setTimeout(function () { document.write("hello world") },3000)*/ //2. setInterval(),循环执行的定时器 //第一个参数是要执行的匿名函数,第二个参数是间隔时间,该方法的返回值是这个定时器id let i = 0 var id = setInterval(function () { i ++ document.write("你好世界<br/>") //我们还有一个方法,clearInterval(定时器的id)清除定时器 if (i == 5) { clearInterval(id) } },2000);
2.2,navigator:浏览器导航对象【了解】
属性 | 作用 |
---|---|
appName | 返回浏览器的名称 |
appVersion | 返回浏览器的平台和版本信息 |
2.3,screen:屏幕对象【了解】
方法 | 作用 |
---|---|
width | 返回显示器屏幕的分辨率宽度 |
height | 返回显示屏幕的分辨率高度 |
2.4,history:历史对象【了解】
方法 | 作用 |
---|---|
back() | 加载 history 列表中的前一个 URL |
forword() | 加载 history 列表中的下一个 URL |
go() | 加载 history 列表中的某个具体页面 |
2.5 location:当前路径信息(最重要)
属性 | 作用 |
---|---|
host | 设置或返回主机名和当前 URL 的端口号 |
href | 设置或返回完整的 URL |
port | 设置或返回当前 URL 的端口号 |
location.href; 获得路径
location.href = “http://www.baidu.com”; 设置路径,跳转到百度页面
3.小结
- BOM: 浏览器对象模型, JS里面封装了五个对象 用来操作浏览器的
- window对象
- alert() 弹出警告框
- confirm() 弹出确认框
- prompt() 弹出输入框
- setInterval(‘函数()’,时间) 周期执行
- setTimeout(’‘函数()’,时间) 延迟执行
- location
- location.href; 获得路径
- location.href=""; 设置路径
三、JS的DOM(最重要)
1. 什么是dom
- DOM:Document Object Model,文档对象模型。是js提供的,用来访问网页里所有内容的(标签,属性,标签的内容)
2. 什么是dom树
- 当网页被加载时,浏览器会创建页面的DOM对象。DOM对象模型是一棵树形结构:网页里所有的标签、属性、文本都会转换成节点对象,按照层级结构组织成一棵树形结构。
- 整个网页封装成的对象叫
document
- 标签封装成的对象叫
Element
- 属性封装成的对象叫
Attribute
- 文本封装成的对象叫
Text
- 整个网页封装成的对象叫
一切皆节点, 一切皆对象
小结
- dom: 文档对象模型, 用来操作网页
- dom树: html通过浏览器加载到内存里面形成了一颗dom树, 我们就可以操作dom树节点(获得节点, 添加节点, 删除节点)
3.操作标签
3.1. 获取标签
方法 | 描述 | 返回值 |
---|---|---|
document.getElementById(id) | 根据id获取标签 | Element 对象 |
document.getElementsByName(name) | 根据标签name获取一批标签 | Element 类数组 |
document.getElementsByTagName(tagName) | 根据标签名称获取一批标签 | Element 类数组 |
document.getElementsByClassName(className) | 根据类名获取一批标签 | Element 类数组 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>获取标签的方法介绍</title> </head> <body> <div id="d1" name="n1">hello div1</div> <div class="c1">hello div2</div> <span class="c1">hello span1</span> <span name="n1">hello span2</span> <script> //根据id获取标签 //console.log(document.getElementById("d1")) //根据name获取标签的数组 //console.log(document.getElementsByName("n1")) //根据标签名获取标签 //console.log(document.getElementsByTagName("div")) //根据类名获取标签 //console.log(document.getElementsByClassName("c1")) //扩展俩方法:1. 获取单个标签 //console.log(document.querySelector("#d1")) //2. 获取多个标签 console.log(document.querySelectorAll("span")) </script> </body> </html>
3.2. 操作标签
方法 | 描述 | 返回值 |
---|---|---|
document.createElement(tagName) | 创建标签 | Element 对象 |
parentElement.appendChild(sonElement) | 插入标签 | |
element.remove() | 删除标签 |
<body> <ul id="city"> <li>北京</li> <li id="sh">上海</li> <li>深圳</li> <li>广州</li> </ul> <input type="button" value="添加" onclick="addCity()"> <input type="button" value="删除" onclick="removeCity()"> <script> //点击添加按钮,往城市列表的最后面添加"长沙" function addCity() { //1. 创建一个li标签 var liElement = document.createElement("li"); //2. 设置li标签体的文本内容为"长沙" liElement.innerText = "长沙" //3. 往id为city的ul中添加一个子标签 //3.1 获取id为city的ul var city = document.getElementById("city"); //3.2 往city里面添加子标签 city.appendChild(liElement) } //点击删除按钮,删除上海 function removeCity() { //要删除某一个标签: 那个标签.remove() document.getElementById("sh").remove() } </script> </body>
3.3.小结
- 获得标签
- document.getElementById("id”) 根据id获得
- document.getElementsByTagName(“标签名”) 根据标签名获得
- document.getElementsByClassName(“类名”) 根据类名获得
- 操作节点(标签,文本)
document.createElement(tagName)
创建标签Element
对象document.createTextNode("文本")
创建文本节点parentElement.appendChild(sonElement)
插入标签element.remove()
删除标签
4.操作标签体
4.1语法
- 获取标签体内容:
标签对象.innerHTML
- 设置标签体内容:
标签对象.innerHTML = "新的HTML代码";
innerHTML
是覆盖式设置,原本的标签体内容会被覆盖掉;- 支持标签的 可以插入标签, 设置的html代码会生效
4.2示例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>操作标签体</title> </head> <body> <div id="city"><h1>北京</h1></div> <script> //获取id为city的那个标签的标签体的内容 var innerHTML = document.getElementById("city").innerHTML; console.log(innerHTML) //设置id为city的标签体的内容 document.getElementById("city").innerHTML = "<h1>深圳</h1>" </script> </body> </html>
4.3. 小结
- 获得标签的内容 (一并获得标签)
标签对象.innerHTML;
- 设置标签的内容(①会把前面的内容覆盖 ②支持标签的)
标签对象,innerHTML = "html字符串";
5.操作属性
5.1. 讲解
- 每个标签
Element
对象提供了操作属性的方法
方法名 | 描述 | 参数 |
---|---|---|
getAttribute(attrName) | 获取属性值 | 属性名称 |
setAttribute(attrName, attrValue) | 设置属性值 | 属性名称, 属性值 |
removeAttribute(attrName) 了解即可 | 删除属性 | 属性名称 |
<body> <input type="password" id="pwd"> <input type="button" value="显示密码" onm ousedown="showPassword()" onm ouseup="hidePassword()"> <script> //目标:按住显示密码按钮的时候,就显示密码框中的密码; 按键松开的时候,就隐藏密码 //1. 给按钮绑定onmousedown事件 function showPassword() { //让密码框的密码显示: 修改密码框的type属性为text document.getElementById("pwd").setAttribute("type","text") } //2. 给按钮绑定onmouseup事件 function hidePassword() { //就是设置密码框的type为password document.getElementById("pwd").setAttribute("type","password") //getAttribute(属性名),根据属性名获取属性值 var type = document.getElementById("pwd").getAttribute("type"); console.log(type) } </script> </body>
5.2.小结
getAttribute(attrName)
获取属性值setAttribute(attrName, attrValue)
设置属性值removeAttribute(attrName)
删除属性
这篇关于JavaScript的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南