Lilly_1116 2021-12-20 20:09 采纳率: 0%
浏览 23

请教各位teacher有关js的异步问题

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
for(var i = 0;i<btns.length;i++){
var btn = btns[i];
btn.onclick = function(){
alert(0);
}
}
我的解答思路和尝试过的方法

当点击btn触发onclick事件时,for循环已经结束了,此时 i = 3,那么btn = btns[2], 为什么btn会有别的值呢

我想要达到的结果
  • 写回答

2条回答 默认 最新

  • 与日很像的月 2021-12-21 09:59
    关注

    将var改为let就行了

    
    ```html
    <body>
      <button>1</button>
      <button>2</button>
      <button>3</button>
      <button>4</button>
      <button>5</button>
      <button>6</button>
    
      <script>
        const btns = document.querySelectorAll('button')
        for (let i = 0; i < btns.length; i++) {
          const btn = btns[i];
          btn.onclick = function() {
            console.log(i);
          }
        }
      </script>
    </body>
    
    

    ```

    评论

报告相同问题?

问题事件

  • 创建了问题 12月20日

悬赏问题

  • ¥20 这张图页脚大概具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22