我猜你<script>
在<head>
. 这通常会失败,因为 DOM 没有完全加载。
<html>
<head>
<script>
function show(){....}
show(); // don't do this
</script>
</head>
<body>
<p>Blackberry</p>
<p>Strawberry</p>
<p>Raspberry</p>
</body>
</html>
最好使用window.onload = show;
or window.addEventListener('load',show);
。
但是,x[i]
是一个局部变量。它在节目之外不为人所知,甚至在您的匿名功能中也不为人所知。所以你必须创建一个闭包或使用this.innerHTML
.
所以要么使用
function show(){
var el = document.getElementsByTagName('p');
for(var i = 0; i < el.lenght; ++i){
el[i].onclick = function(e){
alert(this.innerHTML);
}
}
}
window.onload = show;
或者
function show(){
var el = document.getElementsByTagName('p');
for(var i = 0; i < el.lenght; ++i){
el[i].onclick = (function(element){
return function(e){
alert(element.innerHTML);
};
})(el[i]);
}
}
window.onload = show;
也可以看看: