目录
基本概念
ECMAScript
基本语法
与html结合的方式
注释
数据类型
变量
运算符
类型转换
流程控制语句
基本对象
Function:函数对象
Array:数组对象
Date:日期对象
Math:数学对象
Global
RegExp:正则表达式对象
BOM:浏览器对象模型
Window:窗口对象
弹框有关的方法
与打开关闭有关的方法
与定时器有关的方式
属性
Location:地址栏对象
创建
方法
属性
History:历史记录对象
创建
方法
属性
DOM:文档对象模型
核心DOM模型
Document:文档对象
Element:元素对象
Node:节点对象
HTML DOM
事件监听机制
常见的事件
JS:控制页面的元素,让页面有一些动态的效果
内部JS
定义<script>,标签体内容就是js代码
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>js练习</title> </head> <body> <script> alert(1) </script> </body> </html>
外部JS
定义<script>,通过src属性引入外部的js文件
//js文件 alert(2) //html文件 <head> <meta charset="UTF-8"> <title>js练习</title> <script src="../js/b.js"></script> </head>
注意:script的定义位置会影响执行顺序 一般导入文件放在<head>里 ;写代码放在<body>的最后
单行注释://注释内容
多行注释:/*注释内容*/
1. 原始数据类型(基本数据类型):
1. number:数字。 整数/小数/NaN(not a number 一个不是数字的数字类型)
2. string:字符串。 字符串 "abc" "a" 'abc'
3. boolean: true和false
4. null:一个对象为空的占位符
5. undefined:未定义。如果一个变量没有给初始化值,则会被默认赋值为undefined
2. 引用数据类型:对象
变量:一小块存储数据的内存空间
JS是弱类型语言,在开辟变量存储空间时,不定义空间将来的存储数据类型,可以存放任意类型的数据。 语法:var 变量名 = 初始化值
typeof运算符:获取变量类型
注:null运算后得到的是object
==:类型相同直接比较,类型不同先进行转换再比较
===:类型不同直接返回false
其他类型转number
其他类型转boolean
if...else...
while
do...while
for
switch:switch语句可以接受任意的原始数据类型
创建(2种)
<script> // 方法一 function fun1(a,b) { document.write(a+b+"<br/>"); } fun1(1,2); // 方法二 var fun2=function (a,b) { document.write(a-b+"<br/>") } fun2(2,1); </script>
属性
特点
类似于Java的集合
创建
方法
属性
特点
创建
方法
不用创建对象,静态方法,直接使用。Math.方法名();
方法
属性
主要用于中文字符的编码和解码,因为在网络传输中不能直接使用中文字符
特点:全局对象,该对象的方法不需要创建对象就可以直接调用。方法名();
方法:
eval("alert(1)");
创建
var reg = new RegExp("正则表达式");
var reg = /正则表达式/;
方法
test(参数):验证指定的字符串是否符合正则定义的规范
不需要创建对象直接使用方法名和属性
获取其他的BOM对象
获取DOM对象
示例代码:计时器
<body> <p id="pid"></p> <button id="bt">暂停</button> <script> var num=1; function fun() { document.getElementById("pid").innerText=num+""; num++; } let interval = setInterval(fun,1000); document.getElementById("bt").onclick=function () { clearInterval(interval);//将循环计时器暂停 } </script> </body>
示例代码:倒计时跳转至指定页面
<body> <span id="sid">5</span>秒之后,跳转到首页 <script> var num=5; function fun() { num--; if(num<=0){//判断不要写成num===0,因为网络有延时 location.href="http://www.baidu.com"; } document.getElementById("sid").innerText=num+""; } setInterval(fun,1000); </script> </body>
示例代码:
页面跳转至下一个页面,通过“后退”返回至上一个页面;在上一个页面,通过“前进”返回下一个页面。
<!--第一个页面--> <body> <a href="c_3.html">链接</a><br/> <button id="bt1">前进</button> <script> document.getElementById("bt1").onclick=function () { history.go(1); } </script> </body> <!--第二个页面--> <body> <button id="bt2">后退</button> <script> document.getElementById("bt2").onclick=function () { history.go(-1); } </script> </body>
将标记语言文档的各个组成部分,封装为对象。可以使用这些对象,对标记语言文档进行CRUD的动态操作,一个html文档可以转换成DOM树
创建(获取):
方法
获取Element对象
创建其他DOM对象
创建
方法
所有dom对象都可以被认为是一个节点 ,节点可以是元素节点、属性节点、文本节点等等
主要进行节点的增删操作
方法:
属性
示例代码:动态表格
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>动态表格</title> <style> th,td{ width: 80px; height: 30px; } </style> </head> <body> <input type="text" placeholder="输入用户名" id="username"> <input type="text" placeholder="年龄" id="uage"> <button id="bt_1">添加</button> <br/> <table border="1px" cellpadding="2px" cellspacing="1px" id="table"> <tr> <th>姓名</th> <th>年龄</th> <th>操作</th> </tr> </table> <script> //删除方法 function del(obj){ //通过追溯父元素的方法 获得table、tr var table=obj.parentNode.parentNode.parentNode; var tr=obj.parentNode.parentNode; table.removeChild(tr); } document.getElementById("bt_1").onclick=function () { let name = document.getElementById("username").value; let age = document.getElementById("uage").value; //td_name let td_name = document.createElement("td"); let text_name = document.createTextNode(name);//文本节点 td_name.appendChild(text_name); //td_age let td_age = document.createElement("td"); let text_age = document.createTextNode(age); td_age.appendChild(text_age); //td_made let td_made = document.createElement("td"); let td_a = document.createElement("a"); td_a.setAttribute("hrep","javascript:void(0);"); td_a.setAttribute("onclick","del(this) "); let text = document.createTextNode("删除"); td_a.appendChild(text); td_made.appendChild(td_a); //tr let tr = document.createElement("tr"); tr.appendChild(td_name); tr.appendChild(td_age); tr.appendChild(td_made); //table let table = document.getElementById("table"); table.appendChild(tr) } </script> </body> </html>
标签体的设置和获取:innerHTML
控制元素样式
某些组件被执行了某些操作后,触发某些代码的执行