老师 有个小问题 谢谢

老师 有个小问题 谢谢

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>Document</title>

    <style>

        td {

            width: 30px;

            height: 30px;

            border: 1px solid #000;

        }

       

    </style>

</head>

<body>

    <table id="two"></table>

    <script>

        for(var i=0;i<20;i++)

        {

            var one=document.getElementById ('two');//老师 想请问下为啥这个table节点放哪里都行呀 按道理来说他是作用域是局部 所以不是应该只有一行吗 谢谢

            var tr=document.createElement('tr');

            for(var j=0;j<12;j++)

            {

                var td=document.createElement('td');

                tr.appendChild(td);

            }

            one.appendChild(tr);


        }

    </script>

</body>

</html>


正在回答

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

1回答

同学你好,变量one不是局部的,它是一个全局变量,所以写在for循环里面和外面都行。这不是es6语法,for循环不是块级作用域:

https://img1.sycdn.imooc.com//climg/62ce93f40981724609290421.jpg

祝学习愉快!

  • 慕仙0240544 提问者 #1

    老师 很奇怪呀 放里面的话语法不都变了 这个需要咋理解呀 谢谢老师

    2022-07-13 19:55:13
  • 好帮手慕久久 回复 提问者 慕仙0240544 #2

    不奇怪,语法也没有改变。for循环里面可以写代码逻辑,那把其他的变量的声明语句写在for循环内部也是可以的,代码是可以运行的。

    写在for循环内部,相当于每次for循环都会获取一次table元素,再赋值给变量one。循环多次,就会获取多次table,这样写不是特别优化,建议把 var one=document.getElementById ('two')写在for循环外面。

    同学暂时认识一下这种写法,往后学,可能就慢慢理解了。

    2022-07-14 09:36:38
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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