JavaScript
- JavaScript时一种客户端脚本语言,运行在客户端浏览器中,每一个浏览器都具备解析JavaScript的引擎
- 脚本语言:不需要编译就可以被浏览器直接解析执行了
- 核心功能就是增强用户和HTML页面的交互过程,让页面有一些动态效果,以此来增强用户的体验
JavaScript开发环境
Node.js:JavaScript运行环境
VSCode:编写前端技术的开发工具
下载地址:https://download.csdn.net/download/qq_42795277/12839420
组成部分
- ECMAScript:客户端脚本语言标准统一了所有客户端脚本语言的编码方式
- DOM
- BOM
和HTML结合方式
- 内部引入:<script></script>
- 外部引入方式:<script src=“文件路径”></script>
js文件
document.getElementById("but").onclick = function(){
alert("你点击了我.....")
}
html中引入外部js
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<button id="but">点我</button>
</body>
<!--JavaScript内部引入方式-->
<!--<script>
document.getElementById("but").onclick = function (){
alert("你点击了我")
}
</script>-->
<!--外部引入方式-->
<script src="../js/demo1.js"></script>
</html>
JavaScript基本语法
输入和输出语句
方法 | 说明 |
---|---|
prompt(“提示内容”) | 输入框 |
alert(“提示内容”) | 弹出警告框 |
console.log(“显示内容”) | 控制台输出 |
document.write(“显示内容”) | 页面内容输入出 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>输入输出语句</title>
</head>
<body>
<script>
//prompt("请输入数据!!!");//提示输入框
//alert("我是警告信息");//弹出警告框
//console.log("控制台显示的信息");//控制台输出
document.write("你好 <br/>");
document.write("JavaScript"); //页面内容显示
</script>
</body>
</html>
变量和常量
JavaScript属于弱类型语言,定义变量时不区分具体的数据类型
定义 | 说明 |
---|---|
let 变量名=值 | 定义局部变量 |
变量名 = 值 | 定义全局变量 |
const 常量名 | 定义常量 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>常量和变量</title>
</head>
<body>
<script>
//局部变量
let name = "小明";
let age = 12;
document.write(name + " " +age + "<br/>")
//成员变量
{
let i1 = 100;
i2 = 200;
}
//document.write(i1);//浏览器不会显示,控制提查看因为i1是局部变量,所有会报错
document.write(i2 + "<br/>");
//常量
const PI = 3.14159;
document.write(PI);
//PI = 3.14;//因为PI是常量,所以会报错
//document.write(PI);
</script>
</body>
</html>
原始数据类型
数据类型 | 说明 |
---|---|
boolean | 布尔类型,true或false |
null | 声明null值的特殊关键字 |
undefined | 代表变量未定义 |
number | 整数或浮点数 |
string | 字符串 |
bigint | 大整数,例如:let num = 10n |
- typeof()方法:用于判断变量的数据类型
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>typeOf方法</title>
</head>
<body>
<script>
let l1 = true ;
document.write(typeof(l1) + "<br/>")//boolean
let l2 = null;
document.write(typeof(l2)+ "<br/>");//object js原始的一个错误
let l3;
document.write(typeof(l3)+ "<br/>");//undefined
let l4 = 12;
document.write(typeof(l4)+ "<br/>");//number
let l5 = "你好";
document.write(typeof(l5)+ "<br/>");//string
let l = 100n;
document.write(typeof(l));//bigint
</script>
</body>
</html>
算数元素符
运算符 | 说明 |
---|---|
+ | 加法运算 |
- | 减法运算 |
* | 乘法运算 |
/ | 除法运算 |
% | 取余数 |
++ | 自增 |
- - | 自减 |
赋值运算符
运算符 | 说明 |
---|---|
= | 将等号右边的值赋值给等号左边的变量 |
+= | 相加后赋值 |
-= | 相减后赋值 |
*= | 相乘后赋值 |
/= | 相除后赋值 |
%= | 取余后赋值 |
比较运算符
运算符 | 说明 |
---|---|
== | 判断值是否相等 |
=== | 判断数据类型和值是否相等 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
!= | 不等于 |
逻辑运算符
运算符 | 说明 |
---|---|
&& | 逻辑与,并且的功能 |
| | | 逻辑或,或者的功能 |
! | 取反 |
三元运算符
- 格式:(比较表达式)?表达式1:表达式2;
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<script>
let i1 = 20;
let i2 = "20";
document.write((i2 * 10) + "<br/>");//数字字符串类型在参与运算时会自动类型转换为数字类型
document.write((i1 == i2 )+ "<br/>");// == 只会比较值是否相等
document.write((i1 === i2 )+ "<br/>");// === 会先比较数据类型是否相等,如果相等再比较值是否相等
document.write((i1 === i2) ? true : false);//三元运算符
</script>
</body>
</html>
流程控制和循环语句
- if语句
- switch语句
- for循环
- while循环
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>判断语句和循环语句</title>
</head>
<body>
<script>
let i = 100;
if(i>=60 && i <= 100){//if判断语句
document.write("成绩合格")
}else if(i>=0 && i<60){
document.write("成绩不合格")
}else{
document.write("输入有误")
}
document.write("<br/>");
switch(i){//switch判断语句
case 100:
document.write("100分");
break;
case 0:
document.write("零分");
break;
default:
document.write("输入有误");
break;
}
document.write("<br/>");
for(let i = 0;i <= 10;i++){//for循环
document.write(i + "<br/>")
}
document.write("<br/>");
document.write("<br/>");
let i1=1;
while(i1 < 10){//while循环
document.write(i1 + "<br/>");
i1++;
}
</script>
</body>
</html>
数组
JavaScript数组的使用和Java中的数组基本一致,但是JavaScript中的数组更加灵活,数据类型和长度都没有限制
- 格式:let 数组名=[元素1,元素2,…]
- 数组长度:数组名.length
- 数组高级运算符:…
1.数组复制
2.合并数组
3.字符串转数组
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>数组</title>
</head>
<body>
<script>
let arr1 = [1,2,3,4,5];
arr1[5] = 6; //JavaScript的数组长度和类型是没有限制的
for(let i=0;i<arr1.length;i++){
document.write(arr1[i]+"<br/>");
}
document.write("<br/>");
//数组高级运算符
let arr2 = [...arr1];//将arr1数组的数据复制到arr2数组
for(let i=0;i<arr2.length;i++){
document.write(arr2[i]+"<br/>");
}
document.write("<br/>");document.write("<br/>");
let arr3 = [1,2,3];
let arr4 = [4,5,6];
let arr5 = [...arr3,...arr4];//合并数组,将arr3数组和arr4数组的数据合并到arr5这个数组的数据
for(let i=0;i<arr5.length;i++){
document.write(arr5[i]+"<br/>");
}
document.write("<br/>");document.write("<br/>");
let str = "abcdefg";
let arr6 = [...str];//将字符串转成数组
for(let i=0;i<arr6.length;i++){
document.write(arr6 [i]+"<br/>");
}
</script>
</body>
</html>
函数
函数类似于Java中的方法,可以将一些代码进行抽取,达到复用的效果
定义格式
function 方法名(参数列表){
方法体;
return 返回值;
}
- 可变参数
fucntion 方法名(... 参数名){
方法体;
return 返回值;
}
- 匿名函数
funciton (参数列表){
方法体;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>函数</title>
</head>
<body>
<script>
function fun1() {//无参函数
document .write("fun1方法执行了.....");
}
fun1();//调用方法
document.write("<br/>");
function fun2(num1,num2){//计算两个数据的和
return num1 + num2;
}
let sum = fun2(12,10);
document.write(sum);
document.write("<br/>");
function func3(... nums){//可变参数,计算多个参数的和
let sum = 0;
for(let i = 0;i<nums.length;i++){
sum += nums[i];
}
return sum;
}
let sum1 = func3(10,10,30);
document.write(sum1);
document.write("<br/>");
let num = function(){//匿名函数
document.write("匿名函数执行了...");
}
num();
</script>
</body>
</html>
DOM
-
DOM(Document Object Model):文档对象模型
-
将HTML文档个各个组成部分封装为对象,借助这些对象,可以对HTML文档进行增删改查的动态操作
-
Document:文档对象
-
Element:元素对象
-
Attribute:属性对象
-
Text:文本对象
Element元素的操作
获取Element元素对象
方法名 | 说明 |
---|---|
getElementById(id属性值) | 根据id获取一个元素 |
getElenentsByTagName(标签名称) | 根据标签名称获取多个元素 |
getElementsByName(name属性值) | 根据name属性获取多个元素 |
getElementsByClassName(class属性值) | 根据class属性获取多个元素 |
字元素对象.parentElement属性 | 获取当前元素的父元素 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>获取元素</title>
</head>
<body>
<div id="div1">div1</div>
<div id="div2">div2</div>
<div class = "div3Class">div3</div>
<input type="text" name="inp"><br/>
<script>
let element1 = document.getElementById("div1");//根据元素id获取元素对象
document.write(element1 + "<br/>");
let element2 = document.getElementsByTagName("div");//根据标签获取元素对象
document.write(element2.length + "<br/>");
let element3 = document.getElementsByClassName("div3Class");//根据标签class属性获取元素对象
document.write(element3.length + "<br/>");
let element4 = document.getElementsByName("inp");//根据标签那么属性获取元素对象
document.write(element4.length + "<br/>")
let parentElement = document.getElementById("div1").parentElement;//获取当前元素的父元素
document.write(parentElement);
</script>
</body>
</html>
Element元素的增删改操作
方法名 | 说明 |
---|---|
createElement(标签名) | 创建一个新元素 |
appendChild(子元素) | 将指定的子元素添加到父元素中 |
removeChile(子元素) | 用父元素删除指定的子元素 |
replaceChild(新元素,旧元素) | 用新的元素替换子元素 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>元素的增删改</title>
</head>
<body>
<select id="selectId">
<option>请选择</option>
<option>上海</option>
<option>北京</option>
</select>
<script>
let option = document.createElement("option");//创建元素
option.innerText = "广州";//添加元素文本内容
let select = document.getElementById("selectId");//获取父元素对象
select.appendChild(option);//通过父元素对象添加子元素
//select.removeChild(option);//通过父元素对象移除子元素
let option1 = document.createElement("option");//创建新元素
option1.innerText = "深圳";
select.replaceChild(option1,option);//通过父元素对象将option旧元素替换为option1新元素的数据
</script>
</body>
</html>
Attribute属性的操作
方法名 | 说明 |
---|---|
setAttribute(属性名,属性值) | 设置属性 |
getAttribute(属性名) | 根据属性名获取属性值 |
removeAttribute(属性名) | 根据属性名移除指定的属性 |
style属性 | 为元素添加样式 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>属性的操作</title>
</head>
<body>
<style>
.aColor{
color: rgb(23, 44, 230);
}
</style>
<a>我是超链接,点我啊..</a>
<script>
let a = document.getElementsByTagName("a")[0];//获取到要操作的元素对象
a.setAttribute("href","https://www.baidu.com");//通过元素对象添加属性
document.write("<br/>");
let href = a.getAttribute("href");//获取元素属性
document.write(href)
// a.removeAttribute("href");//删除元素属性
// a.style.color = "red";//style属性添加样式
a.className = "aColor";//className属性添加指定样式
</script>
</body>
</html>
Text文本的操作
方法名 | 说明 |
---|---|
innerText | 添加文本内容,不解析标签 |
innerHTML | 添加文本内容,解析标签 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>文本操作</title>
</head>
<body>
<div></div>
<div></div>
<script>
let div = document.getElementsByTagName("div")[0];
div.innerText = "<a href=#>点我啊</a>";//添加文本内容,不解析标签
let div1 = document.getElementsByTagName("div")[1];
div1.innerHTML = "<a href='https://www.baidu.com'>点我啊</a>";//添加文本内容,并解析标签
</script>
</body>
</html>
事件
事件指的是当某些组件执行某些操作后,会触发某些代码的执行
事件名 | 说明 |
---|---|
onload | 某个页面或图像被完成加载 |
onsubmit | 当表单提交时触发该事件 |
onclick | 鼠标单击事件 |
ondblclick | 鼠标双击事件 |
onblur | 元素失去焦点 |
onfocus | 元素获得焦点 |
onchange | 用户改变域的内容 |
onkeydown | 某个键盘的键被按下 |
onkeypress | 某个键盘的键被按下或被按住 |
onkeyup | 某个键盘的键被松开 |
onmousedown | 某个鼠标按键被按下 |
onmouseup | 某个鼠标按键被松开 |
onmouseover | 鼠标被移到某个元素之上 |
onmouseout | 鼠标从某个元素移开 |
绑定事件
-
通过标签中的事件属性进行绑定:<button id=“but” οnclick=“执行的功能”></button>
-
通过DOM元素属性绑定:document.getElementById(“but”).onclick = 执行的功能
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件操作1-通过标签中的事件属性进行绑定</title>
</head>
<body>
<img id="imgId" src="/1.jpg" style="width: 500px ; height:500px"> <br/>
<button id="up" onclick="up()">上一张</button>
<button id="down" onclick="down()">下一张</button>
<script>
img = document.getElementById("imgId");//获取到img元素对象
function up(){//点击上一张按钮触发这个方法
img.setAttribute("src","/1.jpg");
}
function down(){//点击下一张是调用这个方法
img.setAttribute("src","/2.jpg");
}
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>事件操作2-通过DOM元素属性绑定</title>
</head>
<body>
<img id="imgId" src="/1.jpg" style="width: 500px ; height:500px"> <br/>
<button id="up">上一张</button>
<button id="down">下一张</button>
<script>
function up(){
let img = document.getElementById("imgId");
img.setAttribute("src","/1.jpg");
}
function down(){
let img = document.getElementById("imgId");
img.setAttribute("src","/2.jpg");
}
document.getElementById("up").onclick = up;//点击上一张绑定单击事件
document.getElementById("down").onclick = down;//点击下一张绑定单击事件
</script>
</body>
</html>
类的定义和使用
- 定义格式
class 类名{
constructor(变量列表){
变量赋值;
}
方法名(参数列表){
方法体;
return 返回值;
}
}
- 使用格式
let 对象名 = new 类名(实际变量值);
对象名.方法名();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>javaScript的类的定义和使用</title>
</head>
<body>
<script>
class User{//类
constructor(name,age){//构造方法
this.name = name;
this.age = age;
}
//定义方法
show(){
document.write(this.name + " "+ this.age);
}
play(){
document.write(this.name + "在玩游戏")
}
}
let user = new User("小明","12");//创建对象
user.show();//调用方法
document.write("<br/>");
user.play();
</script>
</body>
</html>
字面量定义类和使用
定义格式
let 对象名 = {
变量名:变量值,
变量名:变量值,
...
方法名 : function(){
方法体;
return 返回值;
},
.....
}
使用格式
对象名.变量名
对象名.方法名();
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>字面量定义类和使用</title>
</head>
<body>
<script>
let user = {
name:"小明",
age:12,
hobby:["看书","跑步","打球"],
//定义方法
show:function(){
document.write(user.name+","+user.age+","+user.hobby[0]+","+user.hobby[1]+","+user.hobby[2]);
},
play(name){
this.name = name;
document.write(this.name + "在玩游戏");
}
};
user.show();
document.write("<br/>");
user.play("小溪");
</script>
</body>
</html>
继承
- 就是让类与类之间产生子父类关系,子类可以使用父类有权限的成员,关键字:extends,顶级父类:Object
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>继承</title>
</head>
<body>
<script>
//定父类
class Person{
constructor(name,age){
this.name = name;
this.age =age;
}
eat(){
document.write("父类的eat方法执行了");
}
}
//定义子类继承父类
class User extends Person{
constructor(name,age,play){
super(name,age);//name和age属性是父类就有的,调用父类构造方法即可
this.play = play;//玩才是子类特有
}
show(){
document.write(this.name + " " +this.age+ " " +this.play);
}
}
let user = new User("小小",12,"王者农药");
user.eat();//调用父类的方法
document.write("<br/>");
user.show();//调用子类的方法
</script>
</body>
</html>
内置对象
内置对象是JavaScript提供的带有属性和方法的特殊数据类型
Number
方法名 | 说明 |
---|---|
parseFloat() | 将传入的字符浮点数转换为浮点数 |
parseInt() | 将传入额字符整数转换为整数 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Number</title>
</head>
<body>
<script>
let str1="3.14159";
document.write(Number.parseFloat(str1));//将字符串数字转换为浮点类型
document.write("<br/>");
let str2 = "10";
document.write(Number.parseInt(str2) + 10);//将字符串转换为整数
document.write("<br/>");
let str3="3234fdjal3433";
document.write(Number.parseInt(str3));//从数字开始转换,直到不是数字为止
</script>
</body>
</html>
Math
方法名 | 说明 |
---|---|
ceil(x) | 向上取整 |
floor(x) | 向下取整 |
roud(x) | 四舍五入 |
random() | 随机数,返回的是0.0到1.0之间的范围(含头不含尾) |
pow(x,y) | 幂运算x的y次方 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Math</title>
</head>
<body>
<script>
let i1 = 3.14;
document.write(Math.ceil(i1));//向上取整
document.write("<br/>");
document.write(Math.floor(i1));//向下取整
document.write("<br/>");
let i2 = 1.5;
document.write(Math.round(i2));//四舍五入
document.write("<br/>");
document.write(Math.random());//随机数,返回的是0.0-1.0之间的范围(含头不含尾)
document.write("<br/>");
document.write(Math.pow(2,3));//幂运算,2的3次方
</script>
</body>
</html>
Date
构造方法 | 说明 |
---|---|
Date() | 根据当前时间创建对象 |
Date(value) | 根据指定的毫秒值创建对象 |
Date(year,month[day,hours,minutes,seconds,milliseconds]) | 根据指定的字段创建对象(月份是0-11) |
Date成员方法
方法名 | 说明 |
---|---|
getFullYear() | 获取年份 |
getMonth() | 获取月份 |
getDate() | 获得天数 |
getHours() | 获取小时 |
getMinutes() | 获取分钟 |
getSeconds() | 获取秒数 |
getTime() | 返回据1970年1月1日至今的毫秒数 |
toLocaleString() | 返回本地时间格式的字符串 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Date</title>
</head>
<body>
<script>
let data1 = new Date();//根据当前时间创建对象
document.write(data1);
document.write("<br/>");
let data2 = new Date(10000);//根据指定的毫秒值创建对象
document.write(data2);
document.write("<br/>");
let data3 = new Date(2025,9,1,10,10,10);//月份是从0-11,所以这里我指定为2025年10月1日10点10分10秒
document.write(data3);
document.write("<br/>");
document.write(new Date().getFullYear());//获取年份
document.write("<br/>");
document.write(new Date().getMonth()+1);//获取月份,注意:月份是0-11,所以需要加一
document.write("<br/>");
document.write(new Date().getDate());//获取天数
document.write("<br/>");
document.write(new Date().getHours());//获取小时
document.write("<br/>");
document.write(new Date().getMinutes());//获取分钟
document.write("<br/>");
document.write(new Date().getSeconds());//获取秒数
document.write("<br/>");
document.write(new Date().getTime());//获取从1970年到这个时间的毫秒数
document.write("<br/>");
document.write(new Date().toLocaleString());//返回本地日期格式的字符串
document.write("<br/>");
</script>
</body>
</html>
String
构造方法 | 说明 |
---|---|
String(value) | 根据指定字符串创建对象 |
let s = “字符串” | 直接赋值 |
String成员方法
方法名 | 说明 |
---|---|
length属性 | 获取字符串长度 |
charAt(index) | 获取指定索引处的字符 |
indexOf(value) | 获取指定字符串出现的索引位置,找不到为-1 |
substring(start,end) | 根据指定索引范围截取字符串(含头不含尾) |
split(value) | 根据指定规则切割字符串,返回数组 |
replace(old,new) | 使用新字符串替换老字符串 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象String</title>
</head>
<body>
<script>
let str1 = new String("abcdefg");//根据指定字符串创建对象
document.write(str1);
document.write("<br/>");
let str2 = "hijklmn";//直接赋值
document.write(str2);
document.write("<br/>");
document.write(str1.length);//获取字符串长度
document.write("<br/>");
document.write(str1.charAt(1));//获取索引为1的字符
document.write("<br/>");
document.write(str1.indexOf('c'));//获取c字符的索引的位置
document.write("<br/>");
document.write(str1.substr(0,2));//截取部分字符串
document.write("<br/>");
document.write("<br/>");
let str3 = "小明,12,玩篮球";
let arr = str3.split(",");//以逗号进行切割把数据保存到数组中
for(let i=0;i<arr.length;i++){
document.write(arr[i]+"<br/>");
}
let str4 = "你真的太TMD厉害了";
document.write(str4.replace("TMD","***"));//替换
document.write("<br/>");
</script>
</body>
</html>
RegExp正则表达式
- 正则表达式是一种对字符串进行匹配的规则
构造方法 | 说明 |
---|---|
RegExp(规则) | 根据指定规则创建对象 |
let reg = /^ 规则$/ | 直接赋值 |
RegExp成员方法
方法名 | 说明 |
---|---|
test(匹配的字符串) | 根据指定规则验证字符串是否符合 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象RegExp</title>
</head>
<body>
<script>
let regExp1 = new RegExp(/^1[3456789]\d{9}$/);//手机号正则表达式规则
let regExp2 = /^1[3456789]\d{9}$/;
let phoneNum = 19985348477;
regExp2.test(phoneNum)
document.write(regExp2.test(phoneNum))
</script>
</body>
</html>
Array
方法名 | 说明 |
---|---|
push(元素) | 添加元素到数组的末尾 |
pop() | 删除数组末尾的元素 |
shift() | 删除数组最前面的元素 |
includes(元素) | 判断数组是否包含给定的值 |
reverse() | 反转数组中的元素 |
sort() | 对数组元素进行排序 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Array</title>
</head>
<body>
<script>
let arr1 = [1,2,3,4,5];
arr1.push(6);//在数组最后添加元素
document.write(arr1);
document.write("<br/>");
arr1.pop();//删除数组最后面的元素
document.write(arr1)
document.write("<br/>");
arr1.shift();//删除数组最前面的元素
document.write(arr1);
document.write("<br/>");
document.write(arr1.includes(3));//判断数组中是否包含指定的元素
document.write("<br/>");
document.write(arr1.sort());//对数组中的数据进行排序
document.write("<br/>");
document.write(arr1.reverse())//反转数组中的元素
document.write("<br/>");
</script>
</body>
</html>
Set
- JavaScript中的Set集合,元素唯一,存取顺序一致
构造方法 | 说明 |
---|---|
set() | 创建Set集合对象 |
Set成员方法
方法名 | 说明 |
---|---|
add(元素) | 向集合中添加元素 |
size属性 | 获取集合长度 |
keys() | 获取迭代器对象 |
delete(元素) | 删除指定元素 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Set</title>
</head>
<body>
<script>
let set = new Set();
set.add("a");//添加元素
set.add("b");
set.add("c");
document.write(set.size);//查看长度
document.write("<br/>");document.write("<br/>");
let keys = set.keys();//获取迭代器对象
for(let i =0;i<set.size;i++){
document.write(keys.next().value+"<br/>")
}
document.write("<br/>");
document.write("<br/>");
set.delete("c");//删除指定的元素
let keys1 = set.keys();//获取迭代器对象
for(let i = 0;i<set.size;i++){
document.write(keys1.next().value + "<br/>")
}
document.write("<br/>");
</script>
</body>
</html>
Map
- JavaScript中的Map集合,key唯一,存取顺序一致
构造方法 | 说明 |
---|---|
Map() | 创建Map集合对象 |
Map成员方法
方法名 | 说明 |
---|---|
set(key,value) | 向集合中添加元素 |
size属性 | 获取集合长度 |
get(key) | 根据key获取value |
entries() | 获取迭代器对象 |
delete(key) | 根据key删除键值对 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象Map</title>
</head>
<body>
<script>
let map = new Map();
map.set("key1","小明");//添加元素
map.set("key2","小小");
map.set("key3","小李");
document.write(map.size);//查询长度
document.write("<br/>");
document.write(map.get("key2"));//根据键获取值
document.write("<br/>");document.write("<br/>");
let entries = map.entries();//获取迭代器对象
for(let i=0;i<map.size;i++){
document.write(entries.next().value + "<br/>");
}
document.write("<br/>");
document.write("<br/>");
map.delete("key3");//根据键删除值
let entries1 = map.entries();
for(let i=0;i<map.size;i++){
document.write(entries1.next().value + "<br/>")
}
document.write("<br/>");
</script>
</body>
</html>
JSON
结果化数据
- JSON(JavaScript Object Notation):是一种轻量级的数据交换格式
- 它是基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据
方法名 | 说明 |
---|---|
stringify(对象) | 将指定的对象转换尾json格式字符串 |
parse(字符串) | 将指定json格式字符串解析尾对象 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>内置对象JSON</title>
</head>
<body>
<script>
let user = {
name:"小明",
age:12,
hobby:["打篮球","跑步"]
}
let json = JSON.stringify(user)//将对象转换为json字符串
document.write(json);
document.write("<br/>");
let u = JSON.parse(json);
document.write(u.name+ " "+u.age+ " "+u.hobby[0]+ " "+u.hobby[1]);
</script>
</body>
</html>
BOM
-
BOM(Browser Object Model) : 浏览器对象模型
-
将浏览器的各个组成部分封装成不同的对象,方便我们进行操作
-
Window:窗口对象
-
Location:地址栏对象
-
Navigator:浏览器对象
-
History:当前窗口历史记录对象
-
Screen:显示器屏幕对象
Window窗口对象
方法名 | 说明 |
---|---|
唯一标识 setTimeout(功能,毫秒值) | 设置一次性定时器 |
clearTimeout(标识) | 取消一次性定时器 |
唯一标识 setInterval(功能,毫秒值) | 设置循环定时器 |
clearInterval(标识) | 取消循环定时器 |
window.onload | 加载事件,在页面加载完毕后触发此事件功能 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Window窗口对象</title>
</head>
<script>
function func1(){
document.write("func1()方法执行了....")
}
let l1 = setTimeout("func1()",2000);//设置定时器,两秒后调用fun()方法
clearTimeout(l1);//取消定时器
function func2(){
document.write("func2()方法执行了.. "+"<br/>")
}
let l2 = setInterval("func2()",2000);//设置循环定时器,每隔两秒执行一次
clearInterval(l2);//取消循环定时器
/*
let div = document.getElementsByTagName("div")[0];
alert(div);//程序一般都是从上到下执行的,因为还没有执行到div标签,所以这里是获取不到div元素对象了,我们可以让文档加载完之后再去获取div元素对象就可以了
*/
//解决
window.onload = function (){
let div = document.getElementsByTagName("div")[0];
alert(div);
}
</script>
<body>
<div>ddd</div>
</body>
</html>
Location地址栏对象
方法名 | 说明 |
---|---|
location.href | 重新设置url,让浏览器读取并显示新的url内容 |
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>location地址栏对象</title>
</head>
<body>
请稍等!<span id="spanId">5</span>秒后自动跳转到百度首页...
</body>
<script>
let num = 5;
function func(){
if(num <= 0){//倒计时结束,自动跳转到百度首页
location.href="https://www.baidu.com";
}else{
num --;
let span = document.getElementById("spanId");
span.innerText = num;//设置倒计时的秒数
}
}
setInterval("func()",1000);//每个一秒调用一次方法
</script>
</html>
显示图片
要求:3秒后显示图片,然后显示3面后关闭图片
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<img src="/1.jpg" id = "imgId" style="display: none"> <!--display属性设置图片默认不显示 -->
</body>
<script>
function show(){//设置显示图片的方法
let img = document.getElementById("imgId");//获取img元素对象
img.style.display = "block";
}
function notShow(){//设置不显示图片的方法
let img = document.getElementById("imgId");//获取img元素对象
img.style.display = "none";
}
setTimeout("show()",3000);//设置定时器,3秒后调用显示图片的方法进行显示图片
setTimeout("notShow()",6000);//等待图片显示3秒后,那就是到6秒时调用关闭图片的方法
</script>
</html>
动态生成6位随机数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>生成6位随机数</title>
</head>
<body>
<span id = "show">000000</span>
<input id = "but" type="button" value="生成随机数"/>
</body>
<script>
function show(){//生成随机数方法
let num1 = Math.random()*900000 + 100000;//获取随机数
let num2 = Math.floor(num1);//向下取整
document.getElementById("show").innerText = num2;
time = setTimeout("show()",6);//每个6毫秒调用自己一次方法
}
window.onload = function button(){
document.getElementById("but").onclick = function(){//给按钮绑定单击事件
show();//调用生成随机数方法
setTimeout("clearTimeout(time)",1000);//一秒后停止生成随机数的定时
}
}
</script>
</html>
封装
- 封装:将复杂的操作进行封装隐藏,对外提供更加简单的操作
写好封装的js
function getById(id){
return document.getElementById(id);
}
function getByName(name){
return document.getElementsByName(name);
}
引入js,然后调用自己封装的方法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>封装</title>
</head>
<body>
<div id="div1"></div>
<div name="divName"></div>
</body>
<script src="my.js"></script><!-- 引入自己写好的封装js-->
<script>
alert(getById("div1"));
alert(getByName("divName"));
</script>
</html>