把oImg[i]改为this,oImg[i]是img对象其中一个属性。另外,函数花括号结尾没有分号
oDiv[i].onclick=function()作为一个新的function函数,怎么还能延续用函数以外的变量和数值呢,函数内应该用新的变量,新的调用阿
写成这样
oDiv[i].onclick = (function(img){
return function(){
img.style.display= "block";
}
})(oImg[i]);
oImg[i].style.display='block' 改成
this.style.display='block'
假如你有3个Div, 3个Img
你for循环结束,onclick都加上之后
i=3
当执行onclick的function的时候i=3
oImg[3] = undefined
所以报错了!
解决方案:
window.onload = function(){
var oDiv = document.getElementsByTagName('div');
var oImg = document.getElementsByTagName('img');
var imgClickHandler = function(i){oImg[i].style.display = 'block';}
var _imgClickHandler = function(i){return function(){
imgClickHandler.call(null, i);
}}
for(var i=0;i
}
}