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 语句没执行,这是为什么? 展开
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 语句没执行,这是为什么? 展开
2个回答
展开全部
我经过测试,在页面放置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语句才是正确的做法。
使用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语句才是正确的做法。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询