小心IE 下document.getElementById()的陷阱

精贴 置顶
1722 0

document.getElementById() 方法,我们都很熟悉的,这个方法可以使用一个元素的 ID 获取这个元素的 DOM 对象。W3C规定这个方法只能以 ID 为参数,但是 MSDN 中对此方法的定义确是返回第一个 ID 或 name 为参数的 DOM 与元素。看,MSDN里的说明:http://msdn.microsoft.com/en-us/library/ms536437(VS.85).aspx

因为这个差异,会造成这个方法的兼容性问题。当使用元素的 name 获取元素对象的时候,就会产生这个问题,IE支持,Safari 和 Chrome 等都不支持。

请看下面的代码:
HTML code
<input type="button" id="inputid" name="inputname" value="test"> <script>     window.onload = function() {           alert(document.getElementById("inputname"));     } </script>

上面这段代码中,使用了 INPUT 元素的name属性来获取它的DOM元素。

这段代码在IE6(S)(Q) 、IE7(Q)(S)和IE8(Q)中,都返回一个 object类型的对象。但是在其他浏览器中返回一个 null。

有兴趣的同学可以尝试把 INPUT 元素换成其他类型的元素试试,这个问题还可能跟类型有关系呢。

为了避免这个兼容性问题,以免造成功能性问题,最好使用 ID 作为该方法的参数。

  • 没有任何评论
今日天气 ···

···

···

···

热门排行
CSS cursor鼠标样式一览表 2012/6/25
.NET后台写JS代码 2011/11/3
网站地址多出jdfwkey的问题解析及... 2010/8/25
百度、google、Yahoo网站地图制作... 2011/1/30
数据库xxx的日志已满,请备份该数... 2013/7/19
<a>标签的伪类书写顺序问题... 2010/9/4
CEO名言 2010/8/31
什么是长尾关键词? 2010/9/24
Mysql 主从数据库同步 2010/9/12
用ASP实现网页BBS 2010/11/1
博主推荐
网站title标题如何正确修改不会被... 2013/8/26
ASP .NET MYSQL 的简单分页 并不... 2013/8/19
网站有弹窗广告这样的站点,百度... 2013/8/17
做淘宝SEO优化需要注意的8大问题 2013/8/17
淘宝网怎么做SEO优化 2013/8/17
站长们要学习的“苍井空精神” 2013/8/17
苹果公司今日发布了iOS 7第五个开... 2013/8/7
小米1刷V5系统WIFI不能连接解决办... 2013/8/1
本博客手机版上线咯!会员后台也... 2013/7/31
Win7系统环境安装配置PHP开发环境... 2013/7/29
随便看看
简单设置让Windows 7程序窗口更听... 2011/1/20
用ASP编写下载网页中所有资源的程... 2010/11/1
网页中插入视频播放代码全集 2010/9/2
我的手有这么脏么。。。 2013/6/21
Google网站流量统计 2010/9/26
js输入框字数限制 2013/6/21
ASP.NET Web.config配置详解 2010/12/10
Flash播放器参数知多少? 2010/12/15
Java技巧:Java中跳出多层循环的... 2013/6/26
百度指数 2010/9/26
北京 上海 杭州 深圳 广州 成都