一、DOM
1.元素的增删改查
1.获取元素
document.documentElement
document.body.scrollTop || document.documentElement.scrollTop;
document.documentElement.scrollTop = "0";
document.documentElement.offsetWidth
document.documentElement.offsetHeight
document.body
document.getElementById("id名");
document.getElementsByClassName("类名");
document.getElementsByTagName("标签名");
document.querySelector("css任意选择器");
document.querySelectorAll("css任意选择器");
var time = document.getElementById("time");
console.log(time);
console.log(typeof time);
console.dir(time);
2.修改元素
element.innerHTML = new html content;
box.innerHTML = "<h1> Hello world !!!</h1>";
time.innerHTML = getDate();
element.attribute = new value;
document.querySelector("input").placeholder = "请输入用户名";
element.setAttribute(attribute, value);
document.querySelector("input").setAttribute("placeholder", "请输入用户名");
element.style.property = new style;
box.style.width = "120px";
female.onclick = function(){
this.className="current";
male.className = "";
}
<div class="box">
<label for="">
<img src="images/close.png" alt="" id="eye">
</label>
<input type="password" name="" id="pwd">
</div>
<script>
var eye = document.getElementById('eye');
var pwd = document.getElementById('pwd');
var flag = 0;
eye.onclick = function() {
if (flag == 0) {
pwd.type = 'text';
eye.src = 'images/open.png';
flag = 1;
} else {
pwd.type = 'password';
eye.src = 'images/close.png';
flag = 0;
}
}
</script>
3.添加和删除元素
document.createElement(element)
document.appendChild(element)
document.removeChild(element)
document.replaceChild(element)
2.offset、client、scroll系列属性
1.offset偏移-获取元素的大小和坐标
<div id="box">
<div id="child"></div>
</div>
body { margin: 0; }
#box {position: relative; width: 300px; height: 300px;
background-color: red; overflow: hidden; margin: 50px;
}
#child { width: 100px; height: 100px; background-color: blue;
margin: 50px; border: 10px solid green; padding: 10px;}
window.onload = function(){
var box = document.getElementById("box");
var width = box.offsetWidth;
var height = box.offsetHeight;
var top = box.offsetTop;
var left = box.offsetLeft;
console.log(width +","+ height+","+ top+","+left);
var child = document.getElementById('child');
var w = child.offsetWidth;
var h = child.offsetHeight;
var t = child.offsetTop;
var l = child.offsetLeft;
console.log("child:"+ w +","+ h+","+ t+","+l);
console.log("child:"+w+","+h+","+t+","+l);
}
2.client系列属性
<div id="box"></div>
#box {width: 100px; height: 100px;margin: 50px;
padding: 10px; border: 30px solid red; background-color: green;}
var box = document.getElementById("box");
var w = box.clientWidth;
var h = box.clientHeight;
var t = box.clientTop;
var l = box.clientLeft;
console.log("clientBox:"+w+","+h+","+t+","+l);
3.scroll滚动属性
注意:scrollTop 是内容滚动出去的距离!!!
scrollWidth 内容宽度+padding,不包括滚动条,宽度和 clientWidth相等
scrollHeight 内容高度+padding+未显示区域
<div id="box">从劳动人民中间走来的新时代领路人,始终心系劳动人民。党的十八大以来,习近平总书记多次出席全国劳动模范和先进工作者表彰大会,同劳动模范代表座谈,看望慰问坚守岗位的...!” </div>
#box { width: 100px; height: 100px; margin: 50px;
border: 30px solid red; padding: 10px;
background-color: green; overflow: auto;
}
var box = document.getElementById('box');
console.log(box.scrollLeft);
console.log(box.scrollTop);
box.onscroll = function () {
console.log(box.scrollLeft);
console.log(box.scrollTop);
}
4.处理兼容:获取页面滚动出去的距离
function getScroll() {
var scrollLeft = document.body.scrollLeft || document.documentElement.scrollLeft;
var scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
return {
scrollLeft: scrollLeft,
scrollTop: scrollTop
}
}
5.实例:当滚动条滚动到底时使表单可用
var inputs = document.getElementsByTagName('input');
var info = document.getElementById('info');
info.onscroll = function () {
if(this.scrollHeight - this.scrollTop == this.clientHeight) {
inputs[0].disabled = false;
inputs[1].disabled = false;
}
}
6.实例:鼠标拖拽盒子案例
代表性网站:百度-登录窗口 效果:鼠标拖动盒子,盒子跟着走
分析:发生这件事情会用到的3个事件:当鼠标在盒子上按下不放onmousedown、鼠标移动 onmousemove 、onmouseup 鼠标弹起/鼠标离开
求:鼠标移动的过程中,盒子的坐标 (需要知道的值:鼠标在盒子上按下时,鼠标在盒子上的位置)
鼠标在页面上的位置 - 鼠标在盒子上的位置 = 盒子的坐标
var x = e.pageX - box.offsetLeft;
var y = e.pageY - box.offsetTop;
var boxX = e.pageX - x;
var boxY = e.pageY - y;
box.style.left = boxX + 'px';
box.style.top = boxY + 'px';
<div class="nav">
<a href="javascript:;" id="register">注册信息</a>
</div>
<div class="d-box" id="d_box">
<div class="hd" id="drop">注册信息 (可以拖拽)
<span id="box_close">【关闭】</span>
</div>
<div class="bd"></div>
</div>
<script src="common.js"></script>
<script>
var box = document.getElementById('d_box');
var drop = document.getElementById('drop');
drop.onmousedown = function (e) {
e = e || window.event;
var x = getPage(e).pageX - box.offsetLeft;
var y = getPage(e).pageY - box.offsetTop;
document.onmousemove = function (e) {
e = e || window.event;
var boxX = getPage(e).pageX - x;
var boxY = getPage(e).pageY - y;
box.style.left = boxX + 'px';
box.style.top = boxY + 'px';
}
}
document.onmouseup = function () {
document.onmousemove = null;
}
var box_close = document.getElementById('box_close');
box_close.onclick = function () {
box.style.display = 'none';
}
</script>
盒子移动的简单动画
var btn = document.getElementById('btn');
var box = document.getElementById('box');
btn.onclick = function () {
box.style.left = box.offsetLeft + 10 + "px";
}
for(var i=1; i<100; i++) {
box.style.left = box.offsetLeft + 5 + "px";
}
setInterval(function(){
box.style.left = box.offsetLeft + 5 + "px"
}, 30)
var btn = document.getElementById('btn');
var box = document.getElementById('box');
var timer;
var step = 6;
var target = 600;
btn.onclick = function () {
timer = setInterval(function(){
if (box.offsetLeft >= target) {
clearInterval(timer);
box.style.left = target + 'px';
console.log(box.style.left);
return;
}
box.style.left = box.offsetLeft + step + 'px';
}, 30)
}
3.DOM事件
1.常用事件属性
window.onload
onresize
onunload
onfocus
onblur
onchange
onsubmit
onclick
onmousemove
onmouseup
onmouseenter 和 onmouseleave
onmouseover 和 onmouseout 事件
onmousedown 和 onmouseup
onscroll
keydown
keyup
keyCode
2.事件对象
什么是事件对象?
用来获取事件的详细信息, 例鼠标坐标、键盘按键
ie下可以直接使用event,非ie需要传入事件对象参数
document.onclick = function(e){
var oEvent = e || window.event;
var box = document.getElementById("box");
box.innerHTML = "当前鼠标的x,y坐标:"+ oEvent.clientX + "," + oEvent.clientY
}
document.onclick = function(e){
var oEvent = e || event;
var box = document.getElementById("box");
box.innerHTML = "当前鼠标的x,y坐标:"+ oEvent.pageX + "," + oEvent.pageY
}
document.onkeydown=function(ev){
var oEvent=ev||event
box.innerHTML=oEvent.keyCode
}
3.处理兼容:获取鼠标在页面中的位置
function getPage(e) {
var pageX = e.pageX || e.clientX + getScroll().scrollLeft;
var pageY = e.pageY || e.clientY + getScroll().scrollTop;
return {
pageX: pageX,
pageY: pageY
}
}
4.事件冒泡
var oEvent = e || event;
oEvent.cancelBubble = true;
5.事件绑定、解绑和捕获
事件绑定 addEventListener(事件名,函数,捕获)第三个参数为可选,默认为false,false即事件流为事件冒泡
事件解绑 removeEventListener(事件名,函数,捕获), 默认为false
事件捕获和事件冒泡相反,如果开启了事件捕获就先执行捕获事件再执行当前被点击事件
注意,事件绑定中传入匿名函数会导致无法进行事件解绑
二、BOM
1.BOM的顶级对象-window
浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。
我们在浏览器中的一些操作都可以使用BOM的方式进行编程处理,比如:刷新浏览器、后退、前进、在浏览器中输入URL等
浏览器的顶级对象是 window,当使用window的成员时,window 可以省略
全局变量都是window 的属性 打印 window 的全部成员 console.dir(window)
定义变量名时 注意不要和window的属性 重名!!!
例: name 是window的属性,是字符串类型, top 是window 的属性,只能获取不能赋值
2.浏览器常用的3种对话框
1.alert() 警告框
2.prompt() 提示输入框
btn02.onclick = function () {
var userName = prompt('请输入姓名', '张三');
console.log(userName);
}
3.confitrm() 让用户决定是否-确定/取消框
btn03.onclick = function () {
var isTrue = confirm('确定要删除数据?');
console.log(isTrue);
}
3.Location对象
1.最常用属性
btn01.onclick = function(){ console.log(location.href); }
btn02.onclick = function(){ location.href = 'http:www.itheima.com'; }
origin
hash
host
hostname
Protocol
search
2.url的组成
网址:统一资源定位符 scheme:
1、scheme:通信协议:常用的 http 、 ftp、 maito
2、host:主机(域名):服务器(计算机)域名系统 (DNS) 主机名或 IP 地址
3、port:端口号:整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
4、path:路径: 由零或多个'/'符号隔开的字符串,一般用来表示主机上的一个目录或文件地址
5、query:查询:可选,用于给动态网页传递参数,可有多个参数,用'&'符号隔开,每个参数的名和值用'='符号隔开。例如:name=zs
6、fragment:信息片断 : 字符串,锚点.
实例:
http:
http:
3.常用方法
btn02.onclick = function(){ location.assign('http:www.itheima.com'); }
btn02.onclick = function(){ location.replace('http:www.itheima.com'); }
btn02.onclick = function(){ location.reload(false); }
4.navigator对象
记录当前浏览器、操作系统、以及当前浏览器使用某内核 的信息
最常用属性:userAgent 通过这个属性可以知道 当前设备 的操作系统版本、浏览器版本、内核
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
5.history对象
浏览器的【前进】、【后退】功能, 通常情况下,只有 【OA办公系统】 会使用到此对象
最常用方法:
forward()
back()
go(1)
go(-1)