为什么删除函数无法执行呢
来源:7-2 编程练习
Aries典
2018-12-07 11:53:26
<!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: #00c4ff7a;
margin: 0 auto;
}
/*ul默认有外边距*/
ul {
width: 300px;
height: 100%;
background-color: #f9c3e6d6;
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;
}
li:hover {
background-color: pink;
}
</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 btnAdd = document.getElementById('btnAdd'),
btnRemove = document.getElementById('btnRemove'),
li = document.getElementsByTagName('li');
ul = document.getElementById('list');
//添加节点
btnAdd.onclick = function() {
len=li.length;
var li1 = document.createElement('li'),
tex = document.createTextNode('我是li'+(len+1));
li1.appendChild(tex);
ul.appendChild(li1);
}
//删除节点
btnRemove.onclick=function(){
ul.removeChild(li.lastElementChild);
}
for (var i = 0; i < li.length; i++) {
li[i].onmouseover = function() {
this.style.backgroundColor = 'pink';
};
li[i].onmouseout = function() {
this.style.backgroundColor = 'red';
}
}
</script>
</body>
</html>1回答
好帮手慕星星
2018-12-07
鼠标移除的应该是ul的最后的一个子元素,不是li的子元素哦,如下是代码中的问题:

可以在代码中添加如果ul的子元素长度为0,就return返回,否则继续移除会报错的。

移入列表改变颜色还是有问题的,不论是原有的前三个列表,还是删除之后新增加的前三个列表,鼠标移入的时候都会改变颜色,其他列表是不改变颜色的,自己可以完善下。
祝学习愉快!
相似问题