[英]On IE document.getElementsByName won't work
我用這個代碼:
<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 6.0或IE 8.0中不起作用,甚至可能在新的IE中也不行。
該怎么辦?
嗯,問題是:IE將document.getElementsByName(...)[0]理解為document.getElementById(...)。 因此,如果你還要為你的元素定義一個id,那么方法document.getElementsByName(element_name)[0] .innerHTML =“”也會出現在IE中!
但是,由於你無論如何都需要根據IE定義一個id,並且因為id必須始終以char開頭,所以你必須使用:
<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絕對贏得了比賽。
更新:
同樣重要的是,我們可以在CSS文件中通過#a234 {...}來解析每個id。 所以我們可以為每個id定義一個自己的樣式 ,這使得id更加強大。
使用getElementsByName獲取DOM元素,其中name屬性不是W3C規范的一部分(例如,在問題中,DIV元素不存在名稱),IE不會獲取這些元素。 FF做到了。
只是為了澄清: expando屬性或更好地稱為自定義屬性是我所說的不屬於W3C規范的屬性。
閱讀: IE7中的getElementsByName
閱讀: http : //msdn.microsoft.com/en-us/library/ms536438(VS.85).aspx
總之:
在嘗試獲取“表單控件” (輸入,選擇,textarea)時使用getElementsByName ,因為它們根據規范將名稱作為屬性。
如果元素不是表單控件,請改用getElementById。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.