let命令的应用

灰太狼 2022-04-05 04:54 196阅读 0赞

先来看个例子:

  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>test</title>
  6. </head>
  7. <body>
  8. <ul id="hd">
  9. <li>zero</li>
  10. <li>one</li>
  11. <li>two</li>
  12. <li>three</li>
  13. <li>four</li>
  14. <li>five</li>
  15. </ul>
  16. </body>
  17. <script>
  18. var lis = document.getElementById("hd").getElementsByTagName("li");
  19. console.log(lis);
  20. for(var i = 0;i < lis.length; i ++){
  21. console.log(lis[i]);
  22. lis[i].onclick = function () {
  23. alert(i);
  24. }
  25. }
  26. </script>
  27. </html>

console.log(lis)会向控制台打印包含6个元素的数组,结果如下:

HTMLCollection(6) [li, li, li, li, li, li]

console.log(lis[i])会向控制台打印每一个元素,结果如下:

  1. <li>zero</li>
  2. <li>one</li>
  3. <li>two</li>
  4. <li>three</li>
  5. <li>four</li>
  6. <li>five</li>

上面代码执行完毕后点击每个li标签会弹出6,原因是在页面刷新完成后,for循环就完成了,然后点击li标签,触发onclick事件,弹出的是最后一次的i值。

解决方法一:给每个标签加属性,将每次循环的i值赋值给对应的标签属性,然后每次循环弹出对应的标签属性。

  1. <script>
  2. var lis = document.getElementById("hd").getElementsByTagName("li");
  3. for(var i = 0;i < lis.length; i ++){
  4. lis[i].list = i;
  5. console.log(lis[i].list);
  6. lis[i].onclick = function () {
  7. alert(this.list);
  8. }
  9. }
  10. </script>

解决方法二:使用let命令

  1. <script>
  2. var lis = document.getElementById("hd").getElementsByTagName("li");
  3. for(let i = 0;i < lis.length; i ++){
  4. lis[i].onclick = function () {
  5. alert(i);
  6. }
  7. }
  8. </script>

上面代码中,i只在本轮循环有效,每一次循环的i值其实都是一个新的变量。

发表评论

表情:
评论列表 (有 0 条评论,196人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Linux let 命令

    命令:let let 命令是 BASH 中用于计算的工具,用于执行一个或多个表达式,变量计算中不需要加上 $ 来表示变量。如果表达式中包含了空格或其他特殊字符,则必须引起来。