標(biāo)準(zhǔn)參考
getElementById 是 Document 接口提供的方法,用于獲取一個(gè)元素,該方法傳入的參數(shù)應(yīng)該是目標(biāo)元素的 id 屬性的值:
Element getElementById(in DOMString elementId);
關(guān)于 getElementById 方法的詳細(xì)信息,請(qǐng)參考 DOM-1-HTML Interface HTMLDocument 及 DOM-2-Core Interface Document 中的相關(guān)內(nèi)容。
問題描述
在 IE6 IE7 IE8(Q) 中,支持以 document.getElementById(elementName) 的方式獲取 name 屬性值為 elementName 的 A APPLET BUTTON FORM IFRAME IMG INPUT MAP META OBJECT EMBED SELECT TEXTAREA 元素。
造成的影響
該問題將導(dǎo)致在某些瀏覽器內(nèi)無法獲取到目標(biāo)元素。
受影響的瀏覽器
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>
以上代碼在頁(yè)面中順次創(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 方法獲取頁(yè)面元素時(shí),應(yīng)傳入元素的 id 屬性值,而不能使用元素的 name 屬性值。
參見
知識(shí)庫(kù)
...
相關(guān)問題
...
測(cè)試環(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
測(cè)試頁(yè)面:...
本文更新時(shí)間:
更多信息請(qǐng)查看IT技術(shù)專欄