alert不出来内容。

<ul>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

<li>click me</li>

</ul>

<script>

varelements=document.getElementsByTagName('li');

varlength=elements.length;

for(vari=0;i<length;i++){

elements[i].οnclick = function(){

alert(i);

    }

}

</script>

请问各位大神,
1. alert(i);为什么打印不出来内容呢?
2.我希望的结果是,每次点击li,都可以得到对应li的index值,麻烦各位大神帮忙改下。

阅读 560
评论
    2 个回答

    不服不行。肉眼真看不出来区别,楼主你是怎么做到的?
    image.png

    第2个问题是很普遍的闭包问题,把var换成let即可。

    for (let i = 0; i < length; i++) {  
        elements[i].onclick = function () {  
            alert(i);  
        }  
    }

    或者

     for (var i = 0; i < length; i++) {
            elements[i].onclick   = (function (i) {
                return function () {
                    alert(i);
                };
            })(i);
        }
    评论 赞赏
      leslie
      • 140

      把script放在body后面,然后同上个回答闭包问题,建议用let

      评论 赞赏
        撰写回答

        登录后参与交流、获取后续更新提醒