您的位置:首页 > 其它

SD9001: IE6 IE7 IE8(Q) 中的 getElementById 方法能以 name 属性为参数获取某些元素

2016-12-14 10:35 771 查看

问题:

IE11中暴露
getElementById 有时候可以取name值,有时候可以去id值
解答如下:

标准参考

getElementById 是 Document 接口提供的方法,用于获取一个元素,该方法传入的参数应该是目标元素的 id 属性的值:
Element getElementById(in DOMString elementId);
关于 getElementById 方法的详细信息,请参考 DOM-1-HTMLInterface HTMLDocument 及 DOM-2-CoreInterface Document 中的相关内容。

问题描述

在 IE6 IE7 IE8(Q) 中,支持以 document.getElementById(elementName) 的方式获取 name 属性值为elementName 的 A APPLET BUTTON FORM IFRAME IMG INPUT MAP META OBJECT EMBED SELECT TEXTAREA 元素。

造成的影响

该问题将导致在某些浏览器内无法获取到目标元素。

受影响的浏览器

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>
以上代码在页面中顺次创建各元素,并尝试以 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 属性值。同时需注意页面中的元素的 id 属性值不能与其他元素的 name 属性值有重复。

参见

知识库

...

相关问题

...

测试环境

操作系统版本:Windows 7 Ultimate build 7600
浏览器版本:IE6IE7IE8Firefox 3.6Chrome 4.0.302.3 devSafari 4.0.4Opera 10.51
测试页面:...
本文更新时间:2010-07-09

关键字

IE getElementById name tagName A APPLET BUTTON FORM IFRAME IMG INPUT MAP OBJECT EMBED SELECT TEXTAREA
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐