老师后面创建的li怎么添加颜色

老师后面创建的li怎么添加颜色

<!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'),

       btn2=document.getElementById('btnRemove'),

       myul=document.getElementById('list'),

       li=document.getElementsByTagName('li');

   for(var i=0,len=li.length;i<len;i++){

       li[i].onmouseover=function(){

           this.style.backgroundColor='red'

       }

       li[i].onmouseout=function(){

           this.style.backgroundColor='green'

       }

   }

   btn1.onclick=function(){

       var txt=document.createTextNode('我是li'+(li.length+1)),

           newli=document.createElement('li');

       newli.appendChild(txt);

       myul.appendChild(newli)

   }

   btn2.onclick=function(){

       myul.removeChild(myul.lastElementChild)

   }

   </script>

</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕星星 2019-08-09 13:38:52

同学的意思是后面所有的li怎么添加颜色,而不是将原有三个li删除之后,再次添加前三个怎么添加颜色吗?

之前给你修改的代码,无论是之前的,还是新创建的,都是前三个li改变颜色,和效果图中一样。如果想要想要实现所有的li都可以改变颜色的话,将for循环中的判断去掉就可以:

http://img1.sycdn.imooc.com//climg/5d4d06dc0001ff4e09230229.jpg

可以再测试下。

好帮手慕星星 2019-08-09 10:33:43

同学你好,代码中的问题:

1、点击删除按钮,将li全部删除之后,继续点击就会报错:

http://img1.sycdn.imooc.com//climg/5d4cda480001d23311690353.jpg

这是因为li已经不存在了,无法继续删除子节点,可以添加个判断。如下:

http://img1.sycdn.imooc.com//climg/5d4cdaa800019a3b05220203.jpg

2、颜色改变的代码从上到下只会执行一次,所以新添加的元素没有颜色效果,可以将代码封装起来调用,如下:


http://img1.sycdn.imooc.com//climg/5d4cdb250001b8f906160391.jpg

先调用一次,然后在点击添加按钮中调用这个方法:

http://img1.sycdn.imooc.com//climg/5d4cdb330001bd3907750298.jpg

可以重新测试下,祝学习愉快!

  • 提问者 蝙蝠不怕黑 #1
    老师更改完之后颜色问题并没有改变 var btn1 = document.getElementById("btnAdd"), btn2 = document.getElementById("btnRemove"), myul = document.getElementById("list"), li = document.getElementsByTagName("li"); function changeColor() { for (var i = 0, len = li.length; i < len; i++) { if (i >= 3) { return; } li[i].onmouseover = function() { this.style.backgroundColor = "red"; }; li[i].onmouseout = function() { this.style.backgroundColor = "green"; }; } } changeColor(); btn1.onclick = function() { var txt = document.createTextNode("我是li" + (li.length + 1)), newli = document.createElement("li"); newli.appendChild(txt); myul.appendChild(newli); changeColor(); }; btn2.onclick = function() { if (myul.children.length <= 0) { return; } myul.removeChild(myul.lastElementChild); };
    2019-08-09 11:14:29
柚子不甜 2019-08-09 00:38:29

 <script type="text/javascript">

    //此处填写代码

    var lis = document.getElementById('list');

    var li = document.getElementsByTagName('li');

    //鼠标滑动颜色效果

    for (var i = 0; i < li.length; i++) {

    li[i].onmouseout=function(){

    this.style.backgroundColor="blue";

    }

    li[i].onmouseover=function(){

    this.style.backgroundColor="pink";

    }

    }

    //添加元素

    var btn = document.getElementById('btnAdd');

    btn.onclick=function(){

var list1 = document.createElement('li');

    var text = document.createTextNode("我是li"+(li.length+1));

    list1.appendChild(text);

    lis.appendChild(list1);

    }

    //删除元素

    var btn1 = document.getElementById('btnRemove');

    btn1.onclick=function(){

    lis.removeChild(lis.childNodes[li.length+1]);

    //删除顺序需要遍历,现在还不会

    }

    </script>

//同学onmouseover是鼠标经过事件,onmouseout事件是在鼠标指针离开元素时触发。使用循环即可,事件视频是JS DOM事件教程中事件类型课程中有讲述https://class.imooc.com/course/1117

  • 额,好像理解错你的意思了。 跟个帖吧。我新建的元素也没有添加颜色,同吗吧!!!
    2019-08-09 00:40:33
  • 你好,可以参考上面的回复哦。祝学习愉快!
    2019-08-09 10:34:18
  • 谢谢老师。已解惑
    2019-08-09 16:44:24
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师