javascript 循环语句的问题

unctionReImgSize(){varpic=document.getElementsByName("showpic");for(vari=0;i<pic.leng... unction ReImgSize(){

var pic = document.getElementsByName("showpic");
for(var i=0;i<pic.length;i++){
if(pic[i].width>550) pic[i].width="550";
}
}
这个函数运行正常
unction ReImgSize(){

var pic = document.getElementsByName("showpic");
for(var i in pic){
if(pic[i].width>550) pic[i].width="550";
}
}
在FF里运行正常,IE里失效,pic[i]对象为空,似乎for 语句没执行,这是为什么?
展开
 我来答
epinszteinic
2008-11-13 · TA获得超过156个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:160万
展开全部
我经过测试,在页面放置2个img,
使用for...in得到的结果pic,其中有3个key:length,showpic,showpic
也就是说,第二个函数里i的值就是:"length","showpic","showpic"
使用pic[i]取的时候:
i="length" ⇒ pic[i]=2 (因为pic里有两个img对象)
i="showpic" ⇒ pic[i]=[object]
i="showpic" ⇒ pic[i]=[object]
第二个和第三个的[object]是一样的,因为key一样...
这个[object]不是一个img,而是包含2个img的数组。

我把你的第二个函数改称下面这样,就能看到结果了:
function ReImgSize1(){
var pic = document.getElementsByName("showpic");
for(var i in pic){
if(i=="showpic"){
alert(pic[i].length);
for(var j=0;j<pic[i].length;j++){
if(pic[i][j].width>550) pic[i][j].width="550";
}
}
}
}

所以说,第二个函数使用for...in是不对的。
第一个函数使用正常的for语句才是正确的做法。
百度网友a7f2d88e7
2008-11-13 · 超过25用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:79.7万
展开全部
上面的正常还是下面的正常?
还有 那些name属性为showpic的对象 页面上装载了吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式