<tfoot id='GErTy'></tfoot>

    • <bdo id='GErTy'></bdo><ul id='GErTy'></ul>
  • <legend id='GErTy'><style id='GErTy'><dir id='GErTy'><q id='GErTy'></q></dir></style></legend>

    <small id='GErTy'></small><noframes id='GErTy'>

        <i id='GErTy'><tr id='GErTy'><dt id='GErTy'><q id='GErTy'><span id='GErTy'><b id='GErTy'><form id='GErTy'><ins id='GErTy'></ins><ul id='GErTy'></ul><sub id='GErTy'></sub></form><legend id='GErTy'></legend><bdo id='GErTy'><pre id='GErTy'><center id='GErTy'></center></pre></bdo></b><th id='GErTy'></th></span></q></dt></tr></i><div id='GErTy'><tfoot id='GErTy'></tfoot><dl id='GErTy'><fieldset id='GErTy'></fieldset></dl></div>

      1. javascript使用for循环批量注册的事件不能正确获取索引值的解决方法

        当使用 for 循环批量注册事件时,经常会遇到无法正确捕获循环变量 i 的问题。这是因为循环结束后,i 的值会变成循环内最后一个迭代的值。这个问题通常称为 JavaScript 的闭包问题。下面是一个简单的示例说明:
          <tbody id='vKvDY'></tbody>
          <i id='vKvDY'><tr id='vKvDY'><dt id='vKvDY'><q id='vKvDY'><span id='vKvDY'><b id='vKvDY'><form id='vKvDY'><ins id='vKvDY'></ins><ul id='vKvDY'></ul><sub id='vKvDY'></sub></form><legend id='vKvDY'></legend><bdo id='vKvDY'><pre id='vKvDY'><center id='vKvDY'></center></pre></bdo></b><th id='vKvDY'></th></span></q></dt></tr></i><div id='vKvDY'><tfoot id='vKvDY'></tfoot><dl id='vKvDY'><fieldset id='vKvDY'></fieldset></dl></div>
          <legend id='vKvDY'><style id='vKvDY'><dir id='vKvDY'><q id='vKvDY'></q></dir></style></legend>
            • <small id='vKvDY'></small><noframes id='vKvDY'>

                • <bdo id='vKvDY'></bdo><ul id='vKvDY'></ul>
                  <tfoot id='vKvDY'></tfoot>

                  当使用 for 循环批量注册事件时,经常会遇到无法正确捕获循环变量 i 的问题。这是因为循环结束后,i 的值会变成循环内最后一个迭代的值。这个问题通常称为 JavaScript 的闭包问题。下面是一个简单的示例说明:

                  <!DOCTYPE html>
                  <html>
                  <head>
                      <title>for循环注册事件示例</title>
                  </head>
                  <body>
                      <!-- 5个按钮,点击后弹出对应的数字 -->
                      <button>1</button>
                      <button>2</button>
                      <button>3</button>
                      <button>4</button>
                      <button>5</button>
                      <script>
                          var buttons = document.getElementsByTagName("button");
                          for (var i = 0; i < buttons.length; i++) {
                              buttons[i].addEventListener("click", function() {
                                  alert(i);
                              });
                          }
                      </script>
                  </body>
                  </html>
                  

                  当单击任何一个按钮时,弹出的结果都是 5,而不是按钮对应的数字。这是因为在事件处理程序函数内,变量 i 的值已经变成了循环结束后 i 的最终值 5

                  要解决这个问题,需要在循环内部为每个按钮创建一个闭包。一个常见的方法是将循环变量的值传递给闭包的参数。这样,事件处理程序可以引用闭包参数,而不是循环变量 i。以下是解决方法的示例:

                  <!DOCTYPE html>
                  <html>
                  <head>
                      <title>for循环注册事件解决方法示例</title>
                  </head>
                  <body>
                      <!-- 5个按钮,点击后弹出对应的数字 -->
                      <button>1</button>
                      <button>2</button>
                      <button>3</button>
                      <button>4</button>
                      <button>5</button>
                      <script>
                          var buttons = document.getElementsByTagName("button");
                          for (var i = 0; i < buttons.length; i++) {
                              (function(index) {
                                  buttons[i].addEventListener("click", function() {
                                      alert(index);
                                  });
                              })(i);
                          }
                      </script>
                  </body>
                  </html>
                  

                  在这个示例中,我们使用了一个立即函数表达式来创建闭包。该函数将循环变量 i 作为参数 index 传递。在事件处理程序函数内,我们使用参数 index 来代替 i。现在单击任何一个按钮时,都会弹出对应的数字。

                  本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                  相关文档推荐

                  layui实现图片上传成功后回显点击放大图片功能,html代码部分: !-- html代码--div class="layui-form-item" label class="layui-form-label"上传图片/label div class="layui-input-block" button type="button" class="layui-btn" id="license-auth-letter-
                  Layui实现数据表格中鼠标悬停图片放大离开时恢复原图的效果,最终效果如下图所示: 实现代码如下,在done函数中调用hoverOpenImg方法 var tableIns = window.demoTable = table .render({ elem : '#idTest', id : 'idTest', url : '/postData', //width : 150
                  我们在用到layui时候,需要点击文本输入框调起弹出选择框并选择内容,这个要怎么操作呢?以下两种方法可以参考: 1、点击名称,弹出信息弹框,选择表格中的某一行,实现效果如下: html页面代码 !--计量器具弹出层-- div id="equipment" lay-filter="equipmen
                  https的网站如果引用百度地图,会出现加载不了的问题,这是因为涉及到跨域问题,网站是https的,但是引用百度地图的是http的,这个要怎么操作呢? 比如我引用的地址:http://api.map.baidu.com/api?v=2.0ak=AK显示 后来看了一下,少了一个s=1字段,加一下s=1
                  做小程序项目的时候,客户提了一个功能需求优化,就是长按文字需要复制全部内容,因为有的手机支持全选复制,有的手机不支持全选复制。 通过设置系统剪贴板的内容和获取系统剪贴板的内容实现复制功能 html相关代码: van-field value="{{form.contactPhone}}"
                  由于项目功能需要,要实现对table中的行实现拖拽排序功能,找来找去发现Sortable.js能很好的满足这个需求,而且它还是开源的,于是乎就开始学习使用Sortable.js 特点 轻量级但功能强大 移动列表项时有动画 支持触屏设备和大多数浏览器(IE9及以下除外) 支持
                • <i id='GPT16'><tr id='GPT16'><dt id='GPT16'><q id='GPT16'><span id='GPT16'><b id='GPT16'><form id='GPT16'><ins id='GPT16'></ins><ul id='GPT16'></ul><sub id='GPT16'></sub></form><legend id='GPT16'></legend><bdo id='GPT16'><pre id='GPT16'><center id='GPT16'></center></pre></bdo></b><th id='GPT16'></th></span></q></dt></tr></i><div id='GPT16'><tfoot id='GPT16'></tfoot><dl id='GPT16'><fieldset id='GPT16'></fieldset></dl></div>

                      <legend id='GPT16'><style id='GPT16'><dir id='GPT16'><q id='GPT16'></q></dir></style></legend>
                          <tbody id='GPT16'></tbody>

                        1. <small id='GPT16'></small><noframes id='GPT16'>

                          • <bdo id='GPT16'></bdo><ul id='GPT16'></ul>
                            <tfoot id='GPT16'></tfoot>