在IE document.getElementsByName将无法正常工作(On IE docume

2019-07-18 21:36发布

我用这个代码:

<div name="1234">
   <img src="pic.gif" height="70" width="100" onMouseOver="clear('1234')">
</div> 

和:

function clear(element_name){
    document.getElementsByName(element_name)[0].innerHTML="";
}

它在Firefox和Opera在新的IE的工作,但在IE 6.0或IE 8.0不工作,也可能甚至没有。

该怎么办?

Answer 1:

好了,问题是这样的:IE理解document.getElementsByName(...)[0]为的document.getElementById(...)。 所以,如果你也将定义一个id为你的元素,方法document.getElementsByName(ELEMENT_NAME)[0] .innerHTML =“”会令人惊讶的还工作,IE!

但既然你无论如何需要定义由于IE浏览器的ID,因为一个id必须以一个字符开始首先,你必须使用:

<div id="a234">
    <img src="pic.gif" height="70" width="100" onMouseOver="clear('a234')">
</div> 

而这个命令:

function clear(element_id){
    document.getElementById(element_id).innerHTML="";
}

甚至更多,document.getElementsByName(...)[0]是在Firefox较慢: http://www.uize.com/tests/performance/getElementById-vs-getElementsByName.html

所以说ID肯定会赢得比赛。

更新:

同样重要的是,我们可以通过#A234 {...}在CSS文件ADRESS每一个ID。 因此,我们可以定义每个ID的自己的风格 ,这使得即使是ID更加强大。



Answer 2:

使用getElementsByName获得DOM元素,其中名称属性不是W3C规范(例如,在问题,名称不存在对DIV元素),IE没有得到这些元素的一部分。 FF做的。
只是为了澄清: 的expando属性或更好地称为自定义属性是什么,我说那不是W3C规范的一部分属性。

阅读: getElementsByName在IE7
阅读: http://msdn.microsoft.com/en-us/library/ms536438(VS.85).aspx

所以在最后:
努力,因为他们根据规范有名称作为属性得到“表单控件”(输入,选择,文本区域)时,使用getElementsByName。
如果元素不是表格控件,使用的getElementById代替。



文章来源: On IE document.getElementsByName won't work