为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS里点击函数,里面在内嵌点击函数,取值问题!求解惑啊,大神!

关于JS里点击函数,里面在内嵌点击函数,取值问题!求解惑啊,大神!

慕村5492868 2018-08-08 17:56:44
<div class="box">111111</div> <div class="box">111111</div> <div class="box">111111</div> <div class="btn">点击事件</div> <script> var ones = ["实验1","实验2","实验3"] for(let i=0;i<ones.length;i++){ $(".box")[i].onclick = function(){ $(".btn").click(function(){ console.log(ones[i]); }) } } </script>这里描述一下问题,正常来说我点击页面上的111,在点击页面上的(点击事件这个按钮),就会取到数组里对应的值(这里是没问题的).但是如果我点击其中一个111,在点击另外一个111,最后再点击触发console的那个点击事件。就会把之前点击那个值一起获取,打印出2个值。这里为什么会把上一次的值存进去了,难道2次点击事件创建了2个btn函数,同时里面的值存进去2个地址?不明白!
查看完整描述

1 回答

?
业余奶茶品鉴师

TA贡献260条经验 获得超388个赞

$(".box")[i].onclick = function(){
    $(".btn").click(function(){
        console.log(ones[i]);
    })
}

这个地方写的有问题,

$(".box")[i].onclick = function(){} 就已经给每个div绑定了点击事件,没必要再写里面的

改成

$(".box")[i].onclick = function(){
    console.log(ones[i]);
}


查看完整回答
反对 回复 2018-08-08
  • 慕村5492868
    慕村5492868
    您好,我再在里面写一层点击事件是因为我这边有一个弹窗,先点击外面的box,在出来弹窗,在点击弹窗里面的btn按钮,第二个点击时间里需要那数组里面的值做判断,然后就出现我说的那个问题,先点击其中一个,再点击另外一个,然后就会把第一次点击的值存起来,这样就会造成判断2次的问题,第一判断会错,第二次判断会对!
  • 业余奶茶品鉴师
    业余奶茶品鉴师
    因为你嵌套了点击事件,所以你点击第二个的时候,会先触发第一个div的点击,然后才是第二个,所以会出错
  • 慕村5492868
    慕村5492868
    我试了一下,点击第二个点击事件并不会触发第一个点击事件.
  • 1 回答
  • 0 关注
  • 1375 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信