zl程序教程

您现在的位置是:首页 >  其他

当前栏目

innerHTML和getElementsByName在IE下面的bug的解决

BUG 解决 IE 下面 innerHTML getElementsByName
2023-06-13 09:14:17 时间
比如有这样一个问题。
复制代码代码如下:

<divid="playlist">
</div>

在这div中,加入一个播放吗列表。这列表用innerHTML加入。
复制代码代码如下:

varplst=null;
plst=player.getPlaylist();
if(plst){
vartxt="";
for(variinplst){
txt+="<aname="fv_item_a_"+i+""></a><divclass="fv_item"id="fv_item_"+i+""><divclass="playing_bg"name="playing_bg"></div>";
txt+="<divclass="playing"name="playing">正在播放...</div>";
txt+="<imgsrc=""+plst[i].image+""width="80"height="50"class="fv_playlist_img"/>";
txt+="<pclass="fv_playlist_title">"+plst[i].title+"</p>";
txt+="</div>";
}
varobj=document.getElementById("playlist");
if(obj){
obj.innerHTML=txt;
}
}

中间的复杂代码不用去管了,现在我要把name为playing的div取出来。很容易想到用
getElementsByName
但是,非常奇怪的是,在ie下面就是取不到。getElementById完全可以用。
下面是一个不错的解决方案:
复制代码代码如下:
functionGetElementsByName(tag,name){
varelem=document.getElementsByTagName(tag);
vararr=[];
varindex=0;
varl=elem.length;
for(vari=0;i<l;i++)
{
varatt=elem[i].getAttribute("name");
if(att==name){
arr[index++]=elem[i];
}
}
returnarr;
}

改成这个函数,就可以取了。只是要多一个参数了。
不知道博友们还有没有其他的解决方案,这个解决方案不是很完美。一定要在评论里面留言一下。