IE中使用setAttribute方法设置属性的问题

用js操作页面元素,给指定元素添加属性,一般来说都是直接使用元素对象的setAttribute方法,如:


1
2
var obj = document.getElementById("img");
obj.setAttribute("width", "100");

但在IE下,如果你想设置onclick这样的属性的话,如果还这么写就错了

obj.setAttribute("onclick", "fun()")//IE下这是错误的!!

这是因为,在IE下,onclick被认为是一个Event,不能通过setAttribute方法来设定其值。我们可以使用DOM添加Event的方法attachEvent来实现,如:


1
2
3
4
5
obj.attachEvent('onclick',func);
function func()
{
alert("点击后这个函数被执行");
}

这样的话,那传递参数怎么办呢?可以通过这样的方法来解决:


1
2
3
4
5
6
7
8
9
10
11
12
obj.attachEvent('onclick',newfunc(p1, p2));
var newfunc = function(p1, p2)
{
return function()
{
func(p1, p2); //该函数为外部定义的一个执行函数;
}
}
function func(p1, p2)
{
alert("点击后这个函数被执行" + p1 + p2);
}

最后顺便说一下,在IE下设置class属性也不能这样:


obj.setAttribute("class", "style_1");//IE下没有任何效果

原因很简单:IE里class应该为className


obj.setAttribute("className", "style_1");//这样写就OK了

2008-10-8 记:
今天又遇到个类似问题,IE也不支持用setAttribute设置style属性!
解决办法:

obj.style.cssText="color:#FF0000"; //该代码兼容常用浏览器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值