文章目录
1.DOM HTML
1.1 增加(末尾加入)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>添加子节点</title>
<style type="text/css">
ul li {
background-color: lightblue;
display: inline;
margin-right: 20px;
}
button {
margin-left: 40px;
}
</style>
<script type="text/javascript">
window.onload = function(){
var button = document.getElementsByTagName("button")[0];
button.onclick = function(){
var newLi = document.createElement("li");
var newText = document.createTextNode("广州");
newLi.appendChild(newText);
var ulHtml = document.getElementsByTagName("ul")[0];
ulHtml.appendChild(newLi);
}
}
</script>
</head>
<body>
<form>
<ul id="city">
<li id="beijing">北京</li>
<li id="shanghai">上海</li>
<li id="shenzhen">深圳</li>
<li id="KongHong">香港</li>
</ul>
</form>
<button value="添加城市">添加城市</button>
</body>
</html>
1.2增加(插入)
<script type="text/javascript">
window.onload = function(){
var button = document.getElementsByTagName("button")[0];
button.onclick = function(){
var newLi = document.createElement("li");
var newText = document.createTextNode("广州");
newLi.appendChild(newText);
var oldNode = document.getElementById("shanghai");
var ulHtml = document.getElementsByTagName("ul")[0];
ulHtml.insertBefore(newLi, oldNode);
}
}
</script>
1.3 修改
window.onload = function() {
var button = document.getElementsByTagName("button")[0];
button.onclick = function(){
var newLi = document.createElement("li");
var newText = document.createTextNode("广州");
newLi.appendChild(newText);
var oldNode = document.getElementById("shanghai");
var ulHtml = document.getElementsByTagName("ul")[0];
ulHtml.replaceChild(newLi, oldNode);
}
}
1.4 删除
1.5另一种操作DOM的方法
<script type="text/javascript">
window.onload = function(){
var button = document.getElementsByTagName("button")[0];
button.onclick = function(){
var city = document.getElementById("shenzhen");
city.innerHTML = "东京";
}
}
</script>
<script type="text/javascript">
window.onload = function(){
var button = document.getElementsByTagName("button")[0];
button.onclick = function(){
var city = document.getElementById("city");
city.innerHTML += "<li>东京</li>";
}
}
</script>
2.DOM CSS
2.1操作内联样式
元素.style.样式(只能获取内联样式)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>cssDemo</title>
<style type="text/css">
#container {
width: 200px;
height: 200px;
background-color: blue;
}
</style>
<script type="text/javascript">
window.onload = function(){
var button = document.getElementById("button");
button.onclick = function(){
var container = document.getElementById("container");
container.style.backgroundColor = "red";
}
}
</script>
</head>
<body>
<div id="container"></div><br/><br/>
<button id="button">改变样式</button>
</body>
</html>
2.2获取元素的样式
<script type="text/javascript">
window.onload = function(){
var box = document.getElementById("container");
var button = document.getElementById("button");
button.onclick = function(){
alert(getComputedStyle(box, null).backgroundColor);
}
}
</script>
我们可以进一步将它封装成函数,供我们方便调用。
<script type="text/javascript">
window.onload = function(){
var box = document.getElementById("container");
var button = document.getElementById("button");
button.onclick = function(){
alert(getElementStyle(box, "width"));
}
var getElementStyle = function(obj, name) {
return getComputedStyle(obj, null)[name];
}
}
</script>
3.事件
3.1事件对象
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>事件</title>
<style type="text/css">
#box1 {
width: 250px;
height: 250px;
border: solid;
}
#box2 {
width: 250px;
height:50px;
border: solid;
}
</style>
<script type="text/javascript">
window.onload = function(){
var box1 = document.getElementById("box1");
var box2 = document.getElementById("box2");
box1.onmousemove = function(event){
var x = event.clientX;
var y = event.clientY;
box2.innerHTML = "x = " + x + "y = " + y;
}
}
</script>
</head>
<body>
<div>
<div id="box1"></div><br/><br/>
<div id="box2"></div>
</div>
</body>
</html>
3.2 Div跟随鼠标
3.3事件冒泡
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo9</title>
<style type="text/css">
#box1 {
width: 300px;
height: 300px;
background-color: blue;
}
#box2 {
width: 50px;
height: 50px;
background-color: red;
position: absolute;
}
</style>
<script type="text/javascript">
window.onload = function(){
var box2 = document.getElementById("box2");
document.onmousemove = function(event){
var left = event.clientX;
var top = event.clientY;
box2.style.left = left + "px";
box2.style.top = top + "px";
};
}
</script>
</head>
<body>
<div id="box1"></div>
<div id="box2"></div>
</body>
</html>
我们来分析一下程序,当鼠标在空白区域地时候,触发了document的事件,但是当鼠标进入蓝色区域,并没有直接触发document事件,应为鼠标事件在蓝色区域中,但是因为有了事件冒泡,所以这个事件会一层一层往上直到触发document事件。我们可以通过event.cancelBubble = true
来取消事件冒泡。
<script type="text/javascript">
window.onload = function(){
var box2 = document.getElementById("box2");
document.onmousemove = function(event){
var left = event.clientX;
var top = event.clientY;
box2.style.left = left + "px";
box2.style.top = top + "px";
};
var box1 = document.getElementById("box1");
box1.onmousemove = function(event){
event.cancelBubble = true;
}
}
</script>
3.4 事件的委派
3.5 事件的绑定
我们之前的方法:对象.onclick = function(){}
一个元素只能绑定一个函数,如果我们想要一次绑定多个函数,我们需要使用下面的方法。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>demo10</title>
<script type="text/javascript">
window.onload = function() {
var button = document.getElementById("button");
button.addEventListener("click", function(){
alert(1);
}, false);
button.addEventListener("click", function(){
alert(2);
}, false);
}
</script>
</head>
<body>
<button id="button" value="按钮">按钮</button>
</body>
</html>
3.6 事件的传播
作者:Beyong
出处:Beyong博客
github地址:https://github.com/beyong2019
本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。