标签:OLE 包含 响应 inf 驱动程序 for 元素对象 elements 事件驱动
DOM,全称Document Object Model,文件对象模型, 通过将HTML文件描述为一个文件树,将HTML文件的全部内容内容描述为树的节点, 同过获取和操作DOM对象的节点,完成对HTML文件的操作

<script> var odocument = document; </script>
<script>
var oHtml = document.documentElement;
console.log(oHtml);
</script>
<script>
var oHtml = document.body; //获得body对象
console.log(oHtml);
</script>
<script>
var oHtml = document.head; //获得head对象
console.log(oHtml);
</script>
document.getElementById(‘xx‘);
document.getElementsByClassName(‘xxx‘);
document.getElementsByTagName(‘xxx‘);
(1). 获取事件源(获取元素)
(2). 绑定事件
(3). 编写事件驱动程序
以div标签的点击事件为例:
<script>
// 获取事件源
var oDivs = document.getElementsByClassName(‘box‘);
for (var i = 0; i < oDivs.length; i++){
//绑定事件
oDivs[i].onclick = function () {
//事件驱动程序
this.style.width = ‘120px‘;
this.style.backgroundColor = ‘green‘;
}
}
</script>
(1)对标签的样式进行操作
修改div的背景色的代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
#box{
width: 200px;
height: 200px;
background-color: green;
}
</style>
</head>
<body>
<div id="box"></div>
<script>
var oDiv = document.getElementById(‘box‘);
//修改div的样式
oDiv.style.backgroundColor = ‘red‘; //修改div的背景色
</script>
</body>
</html>
注意:在获取到标签对象obj之后,使用 obj.style.样式属性 对样式进行操作,在CSS中以 ‘-‘ 连接的样式,在JS中改为驼峰式命名,例如 background-color 变为 backgroundColor ,font-size 改为 fontSize
常用标签属性有:
获取属性的方法:
oDiv.title //获取div标签的title
oImg.src //获取img标签的src
注意:获取类名格式为:obj.className,
获取标签名为:obj.tagName
OImg.getAttribute(‘src‘) // //获取img标签的src属性
修改标签属性:
设置img标签的src属性的实例代码如下:
<body>
<div>
<img src="../u=3561675411,331850226&fm=26&gp=0.jpg" id="img1">
</div>
<script>
var oImg = document.getElementById(‘img1‘);
oImg.onclick = function () {
//获取DOM属性 this.getAttribute()
console.log(this.getAttribute(‘src‘));
//获取DOM属性 this.src
console.log(this.src);
//修改src属性
this.src = "../6451-11122310301335.jpg";
};
oImg.onmouseout = function () {
//通过this.setAttribute() 设置属性
this.setAttribute(‘src‘, "../u=3561675411,331850226&fm=26&gp=0.jpg");
//通过this.src设置属性
this.src = "../u=3561675411,331850226&fm=26&gp=0.jpg"
}
</script>
</body>
对值的操作有三种方式:
获取文本 + 标签
只获取文本
<body>
<div id="box">
<span>Alex</span>
</div>
<script>
var oDiv = document.getElementById(‘box‘);
//修改div的样式
oDiv.style.backgroundColor = ‘red‘;
console.log(oDiv.innerText); //输出结果为Alex
console.log(oDiv.innerHTML); //输出结果为<span>Alex</Alex>
</script>
</body>
</html>
获取获取单闭合标签的value,例如input的value
<body>
<div id="box">
<span>Alex</span>
<input type="text" id="input1" value="Tom">
</div>
<script>
var oInput = document.getElementById(‘input1‘);
console.log(oInput.value); //输出为Tom
</script>
</body>
(1)获取元素的父亲节点
obj.parentNode
(2) 获取元素的兄弟节点
获取上一个兄弟节点:
| obj.previousSibling | 获取上一个兄弟节点, 包含所有节点(换行空文本或者标签) |
| obj.previousElementSibling | 获取上一个兄弟节点(标签) |
获取下一个兄弟节点:
| obj.nextSibling | 获取下一个兄弟节点, 包含所有节点(换行空文本或者标签) |
| obj.nextElementSibling | 获取下一个兄弟节点(标签) |
(3) 获取元素的子节点
| obj.firstChild | 获取元素第一个子节点(换行 空文本 或者元素) |
| obj.firstElementChild | 获取元素第一个元素子节点 |
| obj.lastChild | 获取元素最后一个子节点(换行 空文本 或者元素) |
| obj.lastElementChid | 获取元素最后一个元素子节点 |
| obj.childNodes | 获取元素所有子节点(换行 空文本 或者元素) |
| obj.children | 获取元素的所有元素子节点 |
<body>
<div id="box1">
<span>Alex</span>
<input type="text" id="input1" value="Tom">
</div>
<div id="box2"></div>
<script>
var oBox1 = document.getElementById(‘box1‘);
var oBox2 = document.getElementById(‘box2‘);
var oBody = document.body;
//获取元素的父亲节点
console.log(oBox1.parentNode);
//获取元素的兄弟节点
console.log(oBox2.previousSibling); //获取上一个兄弟节点, 包含所有节点(换行空文本或者标签)
console.log(oBox2.previousElementSibling); //获取上一个兄弟节点(标签)
console.log(oBox1.nextSibling); //获取下一个兄弟节点, 包含所有节点(换行空文本或者标签)
console.log(oBox1.nextElementSibling); //获取下一个兄弟节点(标签)
//获取元素的子节点
console.log(oBody.firstChild); //获取元素第一个子节点
console.log(oBody.firstElementChild); //获取元素第一个元素子节点
console.log(oBody.lastChild); //获取元素最后一个子节点
console.log(oBody.lastElementChild); //获取元素最后一个元素子节点
console.log(oBody.children); //获取元素所有元素节点
console.log(oBody.childNodes); //获取元素所有节点
</script>
(1)创建元素
document.createElement(标签名)
(2)添加元素
obj1.appendChild(obj2) --给obj1添加子元素obj2
<body>
<div id="box1">
<span>Alex</span>
<input type="text" id="input1" value="Tom">
</div>
<div id="box2"></div>
<script>
var oBox1 = document.getElementById(‘box1‘);
var oBox2 = document.getElementById(‘box2‘);
//创建元素
var oSpan = document.createElement(‘span‘);
oSpan.innerText = "Alex"; //修改元素文本内容
//添加元素
oBox2.appendChild(oSpan);
</script>
</body>
鼠标事件onmouserover, onmouseout 与onmouserenter, onmouserleave之间的区别:
| obj.onmouseover | 鼠标进入元素和子元素都触发,父子元素切换触发 |
| obj.onmouseout | 鼠标离开元素或者子元素触发,父子元素切换触发 |
| obj.mouseenter | 鼠标进入元素和子元素触发,父子元素切换不触发 |
| obj.mouseleave | 鼠标离开元素或者子元素触发,父子元素切换不触发 |
<body>
<div class="father">
<span>菜单</span>
<div class="child"></div>
</div>
<script>
var oFather = document.getElementsByClassName(‘father‘)[0];
// .onmouseover() 在进入标签或者子标签会触发(父子标签切换触发)
oFather.onmouseover = function () {
var oChild = document.getElementsByClassName(‘child‘)[0];
oChild.style.display = ‘block‘;
console.log(111);
};
//.onmouseout() 在离开标签或者子标签会触发(父子标签切换触发)
oFather.onmouseout = function () {
var oChild = document.getElementsByClassName(‘child‘)[0];
oChild.style.display = ‘none‘;
console.log(222);
};
//.onmouseenter() 在进入标签或者子标签会触发(父子标签切换不触发)
oFather.onmouseenter = function () {
var oChild = document.getElementsByClassName(‘child‘)[0];
oChild.style.display = ‘block‘;
console.log(333);
};
//.onmouseleave() 在离开标签或者子标签会触发(父子标签切换不触发)
oFather.onmouseleave= function () {
var oChild = document.getElementsByClassName(‘child‘)[0];
oChild.style.display = ‘none‘;
console.log(444);
};
</script>
</body>
标签:OLE 包含 响应 inf 驱动程序 for 元素对象 elements 事件驱动
原文地址:https://www.cnblogs.com/zhangtao1992/p/12030548.html