根据id获取元素
var div = document.getElementById(‘main’);
console.log(div);
// 获取到的数据类型 HTMLDivElement,对象都是有类型的
// HTMLDivElement <-- HTMLElement <-- Element <-- Node <-- EventTarget
注意:由于id名具有唯一性,部分浏览器支持直接使用id名访问元素,但不是标准方式,不推荐使用。
根据标签名获取元素
var divs = document.getElementsByTagName(‘div’);
for (var i = 0; i < divs.length; i++) {
var div = divs[i];
console.log(div);
}
根据name获取元素
var inputs = document.getElementsByName(‘hobby’);
for (var i = 0; i < inputs.length; i++) {
var input = inputs[i];
console.log(input);
}
根据类名获取元素
var mains = document.getElementsByClassName(‘main’);
for (var i = 0; i < mains.length; i++) {
var main = mains[i];
console.log(main);
}
事件三要素
事件源:触发(被)事件的元素
事件类型:事件的触发方式(例如鼠标点击或键盘点击)
事件处理程序:事件触发后要执行的代码(函数形式)
节点的属性:可以使用标签–元素.出来,可以使用属性节点.出来,文本节点.点出来
nodeType:节点的类型:1----标签,2—属性,3—文本
nodeName:节点的名字:标签节点—大写的标签名字,属性节点—小写的属性名字,文本节点----#text
nodeValue:节点的值:标签节点—null,属性节点—属性值,文本节点—文本内容
节点层级
重点讲父子属性,兄弟属性画图讲解
var box = document.getElementById(‘box’);
console.log(box.parentNode);
console.log(box.childNodes);
console.log(box.children);
console.log(box.nextSibling);
console.log(box.previousSibling);
console.log(box.firstChild);
console.log(box.lastChild);
创建元素的三种方式
document.write()
document.write(‘新设置的内容
标签也可以生成
’);innerHTML
var box = document.getElementById(‘box’);
box.innerHTML = ‘新内容
新标签
’;document.createElement()
var div = document.createElement(‘div’);
document.body.appendChild(div);
注册/移除事件的三种方式
var box = document.getElementById(‘box’);
box.onclick = function () {
console.log(‘点击后执行’);
};
box.onclick = null;
box.addEventListener(‘click’, eventCode, false);
box.removeEventListener(‘click’, eventCode, false);
box.attachEvent(‘onclick’, eventCode);
box.detachEvent(‘onclick’, eventCode);
function eventCode() {
console.log(‘点击后执行’);
}
事件的三个阶段
捕获阶段
当前目标阶段
冒泡阶段
事件对象.eventPhase属性可以查看事件触发时所处的阶段
事件对象的属性和方法
event.type 获取事件类型
clientX/clientY 所有浏览器都支持,窗口位置
pageX/pageY IE8以前不支持,页面位置
event.target || event.srcElement 用于获取触发事件的元素
event.preventDefault() 取消默认行为
阻止事件传播的方式
标准方式 event.stopPropagation();
IE低版本 event.cancelBubble = true; 标准中已废弃
常用的鼠标和键盘事件
onmouseup 鼠标按键放开时触发
onmousedown 鼠标按键按下触发
onmousemove 鼠标移动触发
onkeyup 键盘按键按下触发
onkeydown 键盘按键抬起触发
BOM的顶级对象window
window是浏览器的顶级对象,当调用window下的属性和方法时,可以省略window注意:window下一个特殊的属性 window.name
对话框
alert()
prompt()
confirm()
页面加载事件
onload
window.onload = function () {
// 当页面加载完成执行
// 当页面完全加载所有内容(包括图像、脚本文件、CSS 文件等)执行
}
onunload
window.onunload = function () {
// 当用户退出页面时执行
}
onbeforeunload
window.onunload = function () {
// 当用户退出页面前执行
}
location对象
location对象是window对象下的一个属性,时候的时候可以省略window对象
location可以获取或者设置浏览器地址栏的URL
URL
统一资源定位符
URL的组成
scheme://host:port/path?query#fragment
scheme:通信协议
常用的http,ftp,maito等
host:主机
服务器(计算机)域名系统 (DNS) 主机名或 IP 地址。
port:端口号
整数,可选,省略时使用方案的默认端口,如http的默认端口为80。
path:路径
由零或多个’/‘符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。
query:查询
可选,用于给动态网页传递参数,可有多个参数,用’&‘符号隔开,每个参数的名和值用’='符号隔开。例如:name=zs
fragment:信息片断
字符串,锚点.
history对象
back()
forward()
go()
定时器
setTimeout()和clearTimeout()
在指定的毫秒数到达之后执行指定的函数,只执行一次
// 创建一个定时器,1000毫秒后执行,返回定时器的标示
var timerId = setTimeout(function () {
console.log(‘Hello World’);
}, 1000);
// 取消定时器的执行
clearTimeout(timerId);
setInterval()和clearInterval()
定时调用的函数,可以按照给定的时间(单位毫秒)周期调用函数
// 创建一个定时器,每隔1秒调用一次
var timerId = setInterval(function () {
var date = new Date();
console.log(date.toLocaleTimeString());
}, 1000);
// 取消定时器的执行
clearInterval(timerId);