我用这个代码:
<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不工作,也可能甚至没有。
该怎么办?
好了,问题是这样的: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更加强大。
使用getElementsByName获得DOM元素,其中名称属性不是W3C规范(例如,在问题,名称不存在对DIV元素),IE没有得到这些元素的一部分。 FF做的。
只是为了澄清: 的expando属性或更好地称为自定义属性是什么,我说那不是W3C规范的一部分属性。
阅读: getElementsByName在IE7
阅读: http://msdn.microsoft.com/en-us/library/ms536438(VS.85).aspx
所以在最后:
努力,因为他们根据规范有名称作为属性得到“表单控件”(输入,选择,文本区域)时,使用getElementsByName。
如果元素不是表格控件,使用的getElementById代替。