吴贤炬 发表于 2022-2-7 16:11:36

用var不行,换成let就可以了

本帖最后由 吴贤炬 于 2022-2-7 16:35 编辑

这是代码:
<script>
      window.onload = function () {
      var img = document.getElementById("img");
      var imgNum = document.getElementsByTagName("img");
      var imgList = document.getElementById("imgList");
      imgList.style.width = 652 * imgNum.length + "px";
      var btn = document.getElementById("btn");
      var liNum = document.getElementsByTagName("li");
      btn.style.left = (img.offsetWidth - btn.offsetWidth) / 2 + "px";
      var btnA = document.getElementsByTagName("a");
      btnA.style.backgroundColor = "white";
      for (let i = 0; i < btnA.length; i++) {
          btnA.num = i;
          btnA.onclick = function () {
            alert(btnA.num);
          };
      }
      };
    </script>

ckblt 发表于 2022-2-7 16:19:30

可不可以把所有JS代码发一下,我不知道,
可能你前面也定义了 i 。

不建议使用 var

吴贤炬 发表于 2022-2-7 16:36:11

ckblt 发表于 2022-2-7 16:19
可不可以把所有JS代码发一下,我不知道,
可能你前面也定义了 i 。



前面应该没有定义i

ckblt 发表于 2022-2-7 16:41:12

报错了吗

ckblt 发表于 2022-2-7 16:42:51

或者可以用
btnA.forEach((e, i) => {
          btnA.num = i;
          btnA.onclick = function () {
            alert(btnA.num);
          };
})
试试看

吴贤炬 发表于 2022-2-7 16:46:04

ckblt 发表于 2022-2-7 16:42
或者可以用

试试看

还没学到这个{:10_277:}

吴贤炬 发表于 2022-2-7 16:47:02

ckblt 发表于 2022-2-7 16:41
报错了吗

就是点不了

ckblt 发表于 2022-2-7 16:48:44

a =

a.forEach((e, i) => {
console.log(e, i)
})
输出
123 0
456 1
789 2

ckblt 发表于 2022-2-7 16:50:41

点不了是什么意思

吴贤炬 发表于 2022-2-7 20:05:02

ckblt 发表于 2022-2-7 16:50
点不了是什么意思

感谢大佬,我去学闭包了{:10_277:}

ckblt 发表于 2022-2-7 20:43:00

你可以看看这篇文章:
zhuanlan.zhihu.com/p/51966830
讲的是 var 和 let 在 for 语句里的不同

吴贤炬 发表于 2022-2-8 19:13:17

ckblt 发表于 2022-2-7 20:43
你可以看看这篇文章:
zhuanlan.zhihu.com/p/51966830
讲的是 var 和 let 在 for 语句里的不同

ok,感谢大佬
页: [1]
查看完整版本: 用var不行,换成let就可以了