未捕获的TypeError:无法设置undefined的属性'innerHTML'

时间:2014-07-25 11:16:20

标签: javascript php

我很抱歉再次提出这个非常重复的问题,但当我搜索以前的答案时,我找不到任何解决方案。 在下面的代码中,当我单击生成的链接时,我的浏览器返回:Uncaught TypeError: Cannot set property 'innerHTML' of undefined。你愿意帮助我吗? 非常感谢你提前。

   <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <!--generating the links--> 
<div style="background-color:gray;width:100px;min-height:200px;">
    <?php

        for ($i=0 ; $i < 9 ; $i++) { 
            echo "<a href='#' class='links'>{$i}</a><br/><br/>";    
        }

    ?>
</div>

<script type="text/javascript">

    var links = document.getElementsByTagName('a');

    for (var i=0;i<links.length;i++){
        links[i].onclick = function (){
            console.log(links[i].innerHTML);
        };
    }

</script>

</body>
</html>

1 个答案:

答案 0 :(得分:2)

在您的代码中,您尝试访问调用links[i]处理程序时不再存在的元素onclick。要解决事件处理程序中的元素,您可以使用this

for (var i = 0; i < links.length; i++) {
    links[i].onclick = function() {
        console.log(this.innerHTML);
    };
}

更多信息: http://www.quirksmode.org/js/this.html#link5