返回首页
当前位置: 主页 > 编程语言 > Javascript教程 >

解决Object.prototype在IE中不能给document.getElementById得到

时间:2014-02-17 00:36来源:电脑教程学习网 www.etwiki.cn 编辑:admin

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script>

/**
**用于给一个对象中添加其它的属性
*
* 用Object.prototype.getWith=function(){alert('hello');}
* 在IE中不会给document.getElementById()得到的对象添加属性
* 解决的方法是用下面的方面
el 表示要添加的对象
**/
function extend(el){
/**两种添加方法**/
el['test']=function(){alert("hello");}
el.getWith=function(){alert("yes");}
return el;
}


String.prototype.say=function(){
alert("hello");
}
Object.prototype.work=function(){
alert("working");
}
/***测试*/
function aa(){
/**
Object 中可以用
**/
var dd = new Object();
dd.work();//在IE和Firefox能可能成功
extend(dd).test();
extend(dd).getWith();

/***
HtmlElement中也可以用
**/
var d1 = document.getElementById("de");

extend(d1).test();
extend(d1).getWith();
d1.work();//在IE下是不能成功的
}

/*** * 以下是其它的测试 **/
function ww(){
var ee = '123456';
ee.say();
ee.work();
}
</script>
</head>

<body id='bo' >
<div id="de"></div>
<input type="text" name="test" />
<input type="button" onclick="aa();" value="Ok" />
<input type="button" onclick="ww();" value="Ok" />
</body>
</html>

 

 

通过上面的测试可以知道Object.prototype.getWith=function(){alert('hello');}
* 在IE中不会给document.getElementById()得到的对象添加属性

但是会给不是dom中的对象添加

这是因为IE对HTMLElement下的对象保护的原因,所以不行

但我们可以找一个别的方法来实现如:

function extend(el){
/**两种添加方法**/
el['test']=function(){alert("hello");}
el.getWith=function(){alert("yes");}
return el;
}

这样在IE中就可以了,当然在其它的浏览器中也OK
 

------分隔线----------------------------
标签(Tag):Javascript JavaScript源代 JavaScript基础 javascript实例
------分隔线----------------------------
推荐内容
猜你感兴趣