找回密码
 注册
搜索
热搜: java php web
查看: 2347|回复: 19

[Javascript] IE8的getElementById不再支持name属性

[复制链接]
发表于 2009-6-3 15:12:36 | 显示全部楼层 |阅读模式
这2天发现以前在IE6,IE7等浏览器下运行正常的程序在IE8下都不能正常运行
通过VS.Net调试发现问题所在,IE8的getElementById只支持id,不支持name

在原来IE7及以前的版本中,类似
<input type="text" name="txt1">
都可以使用
var obj = document.getElementById("txt1");来取得对象

IE8中不知道为什么取消了这个功能
var obj = document.getElementById("txt1");
此时obj会等于null

我的解决方法:
// 用$ 代替 document.getElementById
function $(id){
    if (typeof(id)=="object")
        return id;
    if (typeof(id)=="string"){
        var obj = document.getElementById(id);
        if(obj != null)
            return obj;
        obj = document.getElementsByName(id);
        if(obj != null && obj.length > 0)
            return obj[0];
    }
    return null;
}
发表于 2009-6-3 17:29:42 | 显示全部楼层
不错,受益了
回复

使用道具 举报

发表于 2009-8-14 13:10:36 | 显示全部楼层
不错,受益了
回复

使用道具 举报

发表于 2009-8-19 14:15:25 | 显示全部楼层
从这个方法名称可知,  ById 本来就是用 id 来。 IE 8 不过是正其本。。。。 IE6 和 IE7 的作法是害人的。。
回复

使用道具 举报

发表于 2009-10-9 20:18:25 | 显示全部楼层
经验 好东西 ,可惜太少了
回复

使用道具 举报

发表于 2009-10-30 19:25:46 | 显示全部楼层
应该的,本来人家就已经说明了ById的嘛,以前能够ByName估计是bug~~~~
回复

使用道具 举报

发表于 2009-10-30 19:32:06 | 显示全部楼层
建议LZ:试着把原码中有name的地方加个id,也许这样就不用 $了,script还是用在必须的地方吧
回复

使用道具 举报

发表于 2010-1-2 14:46:59 | 显示全部楼层
新手,多多指点。。。
回复

使用道具 举报

发表于 2010-1-4 11:15:19 | 显示全部楼层
是可以用的,代码如下:
<input id="txt1" type="text" value="hello" name="txt1" />
<input type="button" onclick="test();" value="submit" />

function test(){
             alert(document.getElementById("txt1").value);
        }
是可以得到值的
本人用的是IE8.0
回复

使用道具 举报

发表于 2010-1-5 11:10:59 | 显示全部楼层
既然是GetbyID,自然要用ID了 :-)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|软晨网(RuanChen.com)

GMT+8, 2024-11-10 15:40

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表