標準參考
getElementById 是 Document 接口提供的方法,用于獲取一個元素,該方法傳入的參數(shù)應該是目標元素的 id 屬性的值:
Element getElementById(in DOMString elementId);
關于 getElementById 方法的詳細信息,請參考 DOM-1-HTML Interface HTMLDocument 及 DOM-2-Core Interface Document 中的相關內(nèi)容。
問題描述
在 IE6 IE7 IE8(Q) 中,支持以 document.getElementById(elementName) 的方式獲取 name 屬性值為 elementName 的 A APPLET BUTTON FORM IFRAME IMG INPUT MAP META OBJECT EMBED SELECT TEXTAREA 元素。
造成的影響
該問題將導致在某些瀏覽器內(nèi)無法獲取到目標元素。
受影響的瀏覽器
IE6 IE7 IE8(Q)
問題分析
分析以下代碼:
<body>
<div id="output"></div>
<script>
var $=function(id){return document.getElementById(id);};
var tags=['A','ABBR','ACRONYM','ADDRESS','APPLET','AREA','B','BDO','BIG','BLOCKQUOTE','BR','BUTTON','CAPTION','CENTER','CITE','CODE','COL','COLGROUP','DD','DEL','DIR','DIV','DFN','DL','DT','EM','FIELDSET','FONT','FORM','FRAME','FRAMESET','H1','H6','HR','I','IFRAME','IMG','INPUT','INS','ISINDEX','KBD','LABEL','LEGEND','LI','LINK','MAP','MENU','META','NOFRAMES','NOSCRIPT','OBJECT','OL','OPTGROUP','OPTION','EMBED','P','PRE','Q','S','SAMP','SCRIPT','SELECT','SMALL','SPAN','STRIKE','STRONG','STYLE','SUB','SUP','TABLE','TBODY','TD','TEXTAREA','TFOOT','TH','THEAD','TITLE','TR','TT','U','UL','VAR','XMP'] ;
for(i=0;i<tags.length;i++){
var tag=tags[i];
document.writeln('<'+tag+' name="name_'+tag+'"></'+tag+'>');
$('output').innerHTML+=$('name_'+tag)?tag+" ":"";
}
</script>
</body>
以上代碼在頁面中順次創(chuàng)建各元素,并嘗試以 document.getElementById(elementName) 的方式來獲取各元素。
在各瀏覽器輸出如下:
IE6 IE7 IE8(Q)其他瀏覽器
A APPLET BUTTON FORM IFRAME IMG INPUT MAP META OBJECT EMBED SELECT TEXTAREA(無)
可見:在 IE6 IE7 IE8(Q) 中,支持以 document.getElementById(elementName) 的方式獲取 A APPLET BUTTON FORM IFRAME IMG INPUT MAP OBJECT EMBED SELECT TEXTAREA 元素,而其他瀏覽器的任何元素均不支持該方式。
解決方案
在使用 document.getElementById 方法獲取頁面元素時,應傳入元素的 id 屬性值,而不能使用元素的 name 屬性值。
參見
知識庫
...
相關問題
...
測試環(huán)境
操作系統(tǒng)版本:Windows 7 Ultimate build 7600
瀏覽器版本:IE6
IE7
IE8
Firefox 3.6
Chrome 4.0.302.3 dev
Safari 4.0.4
Opera 10.51
測試頁面:...
本文更新時間:
更多信息請查看IT技術專欄