老师,为什么这段代码可以实现添加删除,但是不能实现样式改变,能帮我看下吗?
来源:11-2 编程练习
Marcuse
2019-07-09 00:37:09
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
html,
body {
margin: 0;
padding: 0;
}
div:not(:nth-of-type(2)) {
width: 500px;
height: 100%;
background-color: #a0e4ff;
margin: 0 auto;
}
/*ul默认有外边距*/
ul {
width: 300px;
height: 100%;
background-color: #ecc7ea;
list-style: none;
/*清除默认边距*/
margin: 0;
padding: 0;
margin: 20px auto;
margin-bottom: 30px;
}
li {
width: 200px;
height: 30px;
line-height: 30px;
margin: 30px auto;
background-color: #cdffc0;
}
</style>
</head>
<body>
<div id="box">
<button id="btnAdd">添加元素</button>
<button id="btnRemove">删除元素</button>
<ul id="list">我是ul
<li>我是li1</li>
<li>我是li2</li>
<li>我是li3</li>
</ul>
</div>
<script type="text/javascript">
//此处填写代码
var btn1 = document.getElementById("btnAdd");
var btn2 = document.getElementById("btnRemove");
var uls = document.getElementById("list");
for (i=0; i< uls.length; i++) {
var childs = uls.children[i];
childs.onmouseover = function () {
childs.style.backgroundColor = "lightblue";
}
childs.onmouseout = function () {
childs.style.backgroundColor = "pink";
}
}
btn1.onclick = function () {
var ali = document.createElement("li");
var counts = uls.childElementCount;
ali.innerHTML = "我是li"+(counts+1);
uls.appendChild(ali);
};
btn2.onclick = function () {
uls.removeChild(uls.lastElementChild);
};
</script>
</body>
</html>
2回答
好帮手慕夭夭
2019-07-09
你好同学,设置因为 document.getElementById("list");获取的就是一个DOM对象,不是一个集合。dom对象使用 uls.length返回的是undefined,所以逻辑不对哦
改为如下:
祝学习愉快,望采纳。
好帮手慕夭夭
2019-07-10
你好同学,它们本身就是一个概念里面产生的,可以这样理解:
一个html页面可以看成一个DOM树结构 , 而html中的元素 ,属性或者文本,注释等像树枝和树叶一样 ,是组成DOM树的基础节点(node节点)。
页面中的标签元素(例如div,p,这些页面中的标签),使用document.getElementById()方法获取返回的就是一个DOM对象。而使用getElementsByName()和getElementsByTagName()获取的元素,才是同学说的返回一个节点集合(Nodelist)。
而父兄链与返回的是DOM对象还是节点集合没有关系,一个元素有没有兄弟元素和父元素是根据页面结构来说的,例如一个div嵌套一个div,那么里面的div节点就有父元素。
祝学习愉快,望采纳。
相似问题