有个疑惑,帮看看一下

img

img


为什么p2会报错,只能用this.innerHTML 吗

把for循环里面的var 改为 let

this指代的是本窗体的实例,本窗体里面有html
你的objp获取的是p标签
p标签里哪来的html

用objp[0].innerHTML是可以打印出来的,但是按照你这种写法循环加onclick里面使用objp[i].innerHTML是不可以的,因为i都是同一个值3,如果想要实现objp[i].innerHTML这种

script里面换成这样就可以了

        var objp;
        window.onload=function(){
            objp=document.getElementsByTagName("p");
            for(var i=0;i<objp.length;i++) {
                (function (i) { //这个是function里i,即function的形参,也可以换成j,换成什么变量名都无所谓
                    objp[i].onclick = function () {
                        console.log(i);
                        console.log(objp[i].innerHTML)
                        alert(objp[i].innerHTML);
                    }
                })(i);//这是循环中的i,被作为参数传入
            }
        }