Spotlight_mar 2016-10-03 12:52 采纳率: 62.1%
浏览 1685
已采纳

javascript函数,为什么for循环遍历dom节点,监听被点击对象,输出都是一样的呢?

 我想通过for循环内嵌一个事件监听,捕获我点击的是哪个个区域,执行对应函数。可是为什么点击第一个或第二个区域,输出都是2呢?
不是应该对应 0 和 1 吗


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>为什么</title>
    <style type="text/css">
        .container{
            width: 100px;
            height: 100px;
            border: 1px solid black;
        }
    </style>
</head>
<body>
    <div class="container">container1</div>
    <div class="container">container2</div>

    <script type="text/javascript">
        var container = document.getElementsByClassName("container");
        console.log(container.length);          //2
        for (var i = 0; i < container.length; i++) {
            container[i].onmouseup = function(){
                console.log(i)                  //2 (不明白为什么,不是应该0或1吗)
            }
        }
    </script>
</body>
</html>

图片说明

  • 写回答

6条回答 默认 最新

  • 当作看不见 2016-10-03 13:14
    关注

    绑定结束时,i的值就是2,跳出循环,这时候i的值就是2,而不是你触发这个事件时,才绑定的,才执行这个函数,而是文档流加载完以后,就一直是2,所以你触发输出i就一直是2,你把两个标签的内容换一下,就能看到,i还是2,但触发标签是不同的

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。