BOM与DOM
BOM与DOM
Windows对象
window.innerHeight - 浏览器窗口的内部高度
window.innerWidth - 浏览器窗口的内部宽度
window.open() - 打开新窗口
window.close() - 关闭当前窗口
navigator对象
navigator.appName // Web浏览器全称
navigator.appVersion // Web浏览器厂商和版本的详细字符串
navigator.userAgent
/*这里返回的是,你这个请求到底是不是浏览器请求,这个爬虫和处理反爬用到,这个参数就可以看出你发的这个请求是不是一个浏览器的请求*/
navigator.platform // 浏览器运行所在的操作系统
history对象
history.forward() // 前进一页
history.back() // 后退一页
location对象
location.href 获取URL
location.href="URL" // 跳转到指定页面
location.reload() 重新加载页面
三种弹出框
alert(123) // 消息框
undefined
confirm('are you true') //确认框
true
prompt('输入', '默认值') //提示框
"默认值"
计时器
/*
需求:
三秒后打印123
*/
function f() {
console.log('hello world')
}
var t = setTimeout(f, 3000) //这里定义一个定时器,用t这个变量做一下接收,这里时间只支持毫秒,因此三秒后会打印
// clearTimeout(t) //这个是清除定时器,,因为运行到上面的时候,代码继续往下运行,这个定时器还没有起来就被杀死了,所以不会打印
/*
需求:
三秒后重复打印123,但是12秒后停止打印
*/
function f1() {
console.log('hello world')
}
function f2() {
var t = setInterval(f1, 3000) // 定义一个定时器,,每隔3秒运行一次,赋值给一个变量t
function f3() {
clearInterval(t) // 定义清除定时器的函数,clearInterval这个方法用来清除定时器
}
setInterval(f3,12000) // 12秒后运行,清除定时器的函数
}
f2()
查找标签
-
直接查找
document.getElementById 根据ID获取一个标签 document.getElementsByClassName 根据class属性获取 document.getElementsByTagName 根据标签名获取标签合集 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="d1"> <div class="c1 c2"> <img src="" alt=""> </div> </div> <script> var dEle = document.getElementById('d1'); // id是唯一的权重最高的,因此这个可以直接拿到id=d1的标签 console.log(dEle); var cEle = document.getElementsByClassName('c1')[0]; // 类属性不唯一,打印出来是由一个数组包裹的,用索引取值,取到了class为c1的第一个标签 console.log(cEle); var imgEle = document.getElementsByTagName('img')[0]; //标签名不唯一,打印出来的也是一个数组包裹的,用索引取值,取到了第一个img标签 console.log(imgEle); </script> </body> </html> -
间接查找
parentElement 父节点标签元素 children 所有子标签 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="d1"> <div class="c1 c2"> <p id="d2"></p> </div> <div id="d3"></div> </div> <script> var pEle = document.getElementById('d2'); var dEle = pEle.parentElement; //这个拿到d2这个div标签的父标签 var p_dEle = dEle.parentElement; //这个拿到d2这个div标签的父父标签 console.log(dEle); console.log(p_dEle); var dEle1 = document.getElementById('d1'); var c_dEle = dEle1.children; //这个拿到d1这个div的子标签,但是只是子标签,只能拿到他的直系后代,用一个数组包裹 console.log(c_dEle); </script> </body> </html>节点操作
-
创建节点
var divEle = document.getElementById('d1'); var aEle = document.createElement('a'); //创建节点 aEle.href='https://www.mezit.com'; divEle.appendChild(aEle); -
添加节点
var divEle = document.getElementById('d1'); var aEle = document.createElement('a'); aEle.href='https://www.mezit.com'; // 设置内置属性直接用点 divEle.appendChild(aEle); //往d1这个标签下面添加一个a标签 -
删除节点
var divEle = document.getElementById('d1'); var aEle = document.createElement('a'); aEle.href='https://www.mezit.com'; divEle.appendChild(aEle); divEle.removeChild(aEle) //删除节点 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="d1"> <div id="d2"></div> </div> <script> var divEle = document.getElementById('d1'); var del_Ele = document.getElementById('d2'); divEle.removeChild(del_Ele) //删除,,找到父标签,调用removeChild方法,传一个要删除的直系后代标签 </script> </body> </html> -
属性节点--值操作
var divEle = document.getElementById('d1'); var del_Ele = document.getElementById('d2'); divEle.removeChild(del_Ele) divEle.innerText='div'; //添加文本 divEle.innerHTML='<h1>div</h1>' //添加文本 // innerHTML这个可以识别标签,innerText这个不可以,没有就是添加,有就是获取 -
attribute操作 --自定义属性
divEle.setAttribute('username', 'egon'); divEle.getAttribute('username'); divEle.removeAttribute('username');
获取值操作
适用于input框 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <input type="text" name="username" value="egon" id="d1"> <select name="" id="d2"> <option value="1">read</option> <option value="2">DBJ</option> <option value="3">egon</option> </select> <input type="file" id="d3"> <script> var inpEle = document.getElementById('d1'); console.log(inpEle.value); //获取input框的value值 var selEle = document.getElementById('d2'); console.log(selEle.value); //获取select框的value值 var filEle = document.getElementById('d3'); console.log(filEle.files[0]) //获取文件 </script> </body> </html>类属性--class类
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <div id="d1" class="c1"></div> <script> var divEle = document.getElementById('d1'); //找标签 divEle.classList.add('c2'); //添加一个类属性 divEle.classList.remove('c1');//删除一个类属性 console.log(divEle.classList.contains('c1'));//判断这个类属性是否存在 console.log(divEle.classList.contains('c2')); divEle.classList.toggle('c1'); // 有这个类属性就删除,没有就添加,,可以实现一个开关等的事件 divEle.classList.toggle('c1'); </script> </body> </html>css相关操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <div id="d1"></div> <script> var divEle = document.getElementById('d1') divEle.style.border = '2px solid black'; //这个就是操作css属性 divEle.style.width='300px'; divEle.style.height='300px'; divEle.style.backgroundColor='green' </script> </body> </html>事件
-
事件
onclick 当用户点击某个对象时调用的事件句柄。 ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 // 练习:输入框 onblur 元素失去焦点。 应用场景:用于表单验证,用户离开某个输入框时,代表已经输入完了,我们可以对它进行验证. onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) onkeydown 某个键盘按键被按下。 应用场景: 当用户在最后一个输入框按下回车按键时,表单提交. onkeypress 某个键盘按键被按下并松开。 onkeyup 某个键盘按键被松开。 onload 一张页面或一幅图像完成加载。 onmousedown 鼠标按钮被按下。 onmousemove 鼠标被移动。 onmouseout 鼠标从某元素移开。 onmouseover 鼠标移到某元素之上。 onselect 在文本框中的文本被选中时发生。 onsubmit 确认按钮被点击,使用的对象是form。 -
需要掌握的事件
onclick 当用户点击某个对象时调用的事件句柄。 ondblclick 当用户双击某个对象时调用的事件句柄。 onfocus 元素获得焦点。 onblur 元素失去焦点。 onchange 域的内容被改变。 应用场景:通常用于表单元素,当元素内容被改变时触发.(select联动) -
事件的两种绑定方式
// 第一种 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <button id ='d1' onclick="change(this)">click me</button> <script> function change(th) { alert(123) } </script> </body> </html> //第二种 一般用第二种 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <button id="d1">click me</button> <script> var btnEle = document.getElementById('d1'); btnEle.onclick = function () { alert(123) } </script> </body> </html> /* this表示触发事件的当前元素 */ -
window.onload
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> <script> window.onload = function () { var btn = document.getElementById('d1') btn.onclick = function () { alert(123) } } </script> </head> <body> <button id="d1">click me</button> </body> </html> /* onload事件, 等其他代码加载完毕之后,在加载这一块内容,,因为script这些代码一般写在头部,代码从上至下加载,在加载到的事件的时候,还没有定义这个事件 */ -
input框获取焦点与失去焦点
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <input type="text" value="egon" id="d1"> <script> var btn = document.getElementById('d1'); btn.onfocus = function () { console.log(123) }; btn.onblur = function () { console.log(456) } </script> </body> </html> -
开关灯事件
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> <style> #d1{ width: 200px; height: 200px; border: 2px solid black; } .c1{ background-color: red; } .c2{ background-color: green; } </style> </head> <body> <div id="d1" class="c1"></div> <button id="d2">click me</button> <script> var btn = document.getElementById('d2'); btn.onclick = function () { var dEle = document.getElementById('d1'); dEle.classList.toggle('c2'); //用这个方法,,有就删除一个属性,没有就添加 } </script> </body> </html> -
省市联动
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/3.4.1/js/bootstrap.min.js"></script> </head> <body> <select id="d1"> </select> <!--省--> <select id="d2"> <option value="">--请选择--</option> </select> <!--市--> <script> var pro = document.getElementById('d1'); // 省 var city = document.getElementById('d2'); //市 var data = { '上海': ['青浦', '浦东', '浦西'], '北京': ['朝阳', '海淀', '昌平'], '河南': ['郑州', '周口', '洛阳', '商丘'], '云南': ['大理', '丽江', '西双版纳'], } for (let key in data) { var opt = document.createElement('option'); //创建空的option标签 opt.value = key; //设置value属性,,<option value = key></option> opt.innerText = key; //设置文本 <option value = key>key</option> pro.appendChild(opt) //添加标签 } pro.onchange = function () { // console.log(pro.value) var se_pro = this.value; //利用点击事件拿到用户选择的那个省 cityList = data[se_pro]; //拿到对象对应的省的市数组 city.innerText = ''; // 当拿到这个省之后,清空掉市这个下拉框 for (var i =0; i < cityList.length;i++){ var ct_op = document.createElement('option'); ct_op.value = cityList[i]; ct_op.innerText = cityList[i]; city.appendChild(ct_op); } }; </script> </body> </html>
-
浙公网安备 33010602011771号