javascript!

<body onload="init()">

    <p>1</p>


    <p>2</p>


    <p>3</p>


    <p>4</p>


    <p>5</p>

</body>


<script>

      var pAry = document.getElementsByTagName('p');


      function init(){

          for(var i=0;i<pAry.length;i++){

              pAry[i].i = i;

              pAry[i].onclick =function () {

                  console.log(pAry[i].i)

              };

          }

      }

</script>

代码倒数第五行 为什么我这样写浏览器会报Cannot read property 'i' of undefined
而换成this之后 就能正常运行
这两者的区别在哪?
谢谢各位了

斯蒂芬大帝
浏览 504回答 1
1回答

慕尼黑8549860

&nbsp;pAry[i].onclick =function () {&nbsp; &nbsp; &nbsp; console.log(pAry[i].i)&nbsp; };//引用的i是他父函数init函数的变量i,init里的函数i经过循环后值变成了5,pAry[i]就数组越界了,越界了就是undefined
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript