<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;
またはを使用することをお勧めします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;
以下も参照してください。