晕乎乎又做了一遍,又发现两个问题,迷糊

晕乎乎又做了一遍,又发现两个问题,迷糊

<!DOCTYPE html>

<html lang="en">

<head>

  <meta charset="UTF-8">

  <title>节点练习</title>

</head>

<body>

    <div id="wrap">

      <ul id="list">

        <li>第一个li</li>

        <li>第二个li</li>

        <li>第三个li</li>

      </ul>

    </div> 

    <script>

     //在此处补充代码

     var div=document.getElementById("wrap");

     var oul=document.getElementById("list");

    //  var nul=document.createElement("ul");


     var arr=["我能","我行","我可以"];

    //  var nli=null;

         for(var i=0;i<3;i++){

           var txt=document.createTextNode(arr[i]);

           console.log(txt);

           var nli=document.createElement("li");

           var nul=document.createElement("ul");

           nli.appendChild(txt);

           nul.appendChild(nli);

         }   

         console.log(nul);

         div.replaceChild(nul,oul);

    </script>

</body>

</html>

  1.    var nul=document.createElement("ul");这句话放在循环体里结果只出现一个,是因为每次都创建一个新的nul造成的吗,每次循环创建一个li和ul然后每次装填,造成一次一个的结果吗? 那为啥LI可以呢

  2. 在循环题外声明 var nli=null; 和在循环体里声明 var nli=document.createElement("li");感觉结果没啥区别,一个null一个undifined但结果都一样,我就糊涂什么时候,用什么,这个问题很纠结。

正在回答

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

2回答

同学你好,这两种写法的区别如下:

null可以表示一个空对象指针,假如一个变量想要在以后保存对象,但是目前还没有赋值,那么就可以先赋值为null。像视频中,就是在后面创建一个DOM元素(也可以叫DOM对象)把它赋值给了li,所以初始将li赋值为null会更好

var a这种写法,相当于声明了没有赋值,假如不确定这个变量以后保存的字符串还是数字,那么就不可以不用赋值,直接声明就可以了。

目前阶段,不用感到困扰,使用哪一个都是可以的。随着课程深入的学习,同学掌握的知识会越来愈多,知识体系也会增加,慢慢就会明白了。

祝学习愉快~

好帮手慕慕子 2020-05-01 17:31:50

同学你好,对于你的问题解答如下:

1、是的, 因为每循环一次就会重新声明一个nul,覆盖之前的nul,导致循环结束ul中只添加了一个li,所以无法实现效果。

但是在循环外声明nul, 每次循环会将新创建的li添加到ul中,这样下一次循环重新创建的li元素,会继续追加到ul中,并不会影响到之前已经添加到ul中的li,所以在循环内声明li是可以实现效果。

2、 在循环内还是循环外声明nli,确实没什么区别,效果实现都是一样,同学目前不用纠结,能够实现效果就可以了。

如果我的回答帮助到了你,欢迎采纳,祝学习愉快~

  • 提问者 只恨未尽心 #1
    不知道什么时候用 var a=null 和 var a ; 我感觉这很困扰我
    2020-05-01 17:35:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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