javascript - 关于JS for循环问题~求解~~
天蓬老师
天蓬老师 2017-04-11 12:57:46
[JavaScript讨论组]

    
    
    
    
    
    
    

求教该如何改进代码~才能达到点击按钮1输出1,点击按钮2输出2....这种效果万分感谢

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(7)
ringa_lee

开始用 let 声明变量吧

迷茫

for (var i = 1; i <=5; i++) {

          (function(i){
                $("#btn"+i+"").click(function () {
                    console.log(i);
                })
          })(i)
      }
黄舟

嗨呀 又是闭包问题

for (var i = 1; i <=5; i++) {
    
    (function(i){
        $('#btn' + i).click(function () {
            console.log(i);            
        });
    })(i);
    
}
大家讲道理

又是闭包问题...

for (var i = 1; i <=5; i++) {
  (function(arg){
    $("#btn"+arg+"").click(function () {
    console.log(arg);//点击任何按钮都是输出6~我想要的效果是点击按钮1输出1,点击按钮2输出2.........求解~~
  });
  })(i); 
}

附上资料,理解原理比知道怎么写重要:
https://segmentfault.com/a/11...

ringa_lee
<button data-ref="1">button1</button>
<button data-ref="2">button2</button>
<button data-ref="3">button3</button>
<button data-ref="4">button4</button>
<button data-ref="5">button5</button>
<button data-ref="6">button6</button>
<button data-ref="7">button7</button>
<button data-ref="8">button8</button>
<script type="text/javascript" src="http://cdn.bootcss.com/jquery/3.1.0/jquery.js"></script>
<script type="text/javascript">
  $("button").click(function(){
    console.log($(this).attr("data-ref"));
  })
</script>

贴上代码你看看

迷茫

$('button').click(function(){

    alert($(this).index()+1);
})
巴扎黑

因为console.log你点击才会触发, 而你点击前for已经执行完了, 所以i一定是取到的最终值.
最简单的方法是利用闭包, 把i作为参数传进去.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号