我正在开发一款需要在IE Mobile中运行的移动网络应用。我已经缩小了一个JavaScript错误,我得到IE Mobile不支持'className
'属性(IE4引擎......)。我正在尝试找到一种适用于所有浏览器的替代方案,只需更改代码(我已经有一些使用“className
”的库。)
我能想到的最简单的方法是修改IE的元素原型以包含className(如果它没有它),问题是我不知道'className
'的替代方案是什么在IE Mobile中。
我试过这个:
element.className = element.class;
这显然不起作用,因为class
是JavaScript中的关键字而我的JS压缩器不喜欢它,并且它可能无论如何都无效。
除了在任何地方使用'setAttribute()',我需要修改一个元素的类,我可以使用的任何属性是否等同于className?
答案 0 :(得分:2)
虽然您无法避免使用setAttribute()
,但您可以从jQuery playbook中取出一行并使用带有可选参数的帮助程序。此代码未经测试,但应该有效:
var className = function (obj, value)
{
if (value !== undefined)
{
return obj.setAttribute ('class', value);
}
return obj.getAttribute ('class');
};
// Use as
alert (className (element));
className (element, "foo");
alert (className (element));
答案 1 :(得分:1)
没有属性,没有。我担心你会遇到getAttribute()和setAttribute()。
答案 2 :(得分:1)
跟进John Millikin,您甚至可以将该功能作为IE元素原型的一部分:
Element.prototype.getClass = function() {
return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
return obj.setAttribute('class', newClass);
}
或者如果你想要像John提供的组合方法......
Element.prototype.className = function(newClass) {
if (!newClass)
return this.getClass();
return this.setClass(newClass);
}