javascript错误信息是为空或不是对象是怎么回事?

如题所述

第1个回答  2012-08-10
把oImg[i]改为this,oImg[i]是img对象其中一个属性。另外,函数花括号结尾没有分号追问

thanks!

第2个回答  2012-08-10
oDiv[i].onclick=function()作为一个新的function函数,怎么还能延续用函数以外的变量和数值呢,函数内应该用新的变量,新的调用阿追问

oImg[I].style.display="block"; 你是说这里不能调用包裹这个的函数以外的变量吗,就那个‘I’ 这里用不了是吗?

追答

window.onload=function()
{ var oDiv=document.getElementsByTagName('div');
for(var i=0;i<oDiv.length;i++)
{
oDiv[i].onclick=function(i)
{
var oImg=document.getElementsByTagName('img');
oImg[i].style.display="block";
}
}
}
感觉你是想达到这样的效果,不过我没试过,不知道打错没

追问

我定义了36个小方块,使每个小方块鼠标点击出现对应的图片,你这个好像也点不出来,不过谢谢啦。

第3个回答  2012-08-10
写成这样
oDiv[i].onclick = (function(img){
return function(){
img.style.display= "block";
}
})(oImg[i]);追问

thanks!

第4个回答  2012-08-10
oImg[i].style.display='block' 改成
this.style.display='block'追问

thanks!

第5个回答  2012-08-10
假如你有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<oDiv.lenght;i++){
oDiv[i].onClick = _imgClickHandler.call(null, i);
}
}追问

谢谢你!辛苦了,我测你说的思路,果然是那个错误。不过解决方案,我还是行不通。╮(╯▽╰)╭。我才刚学几天,有些函数不是很理解。我再研究研究。。。

本回答被提问者和网友采纳
相似回答