用于IE Mobile的JavaScript中“className”的替代方案?

时间:2009-04-08 03:40:04

标签: javascript ie-mobile

我正在开发一款需要在IE Mobile中运行的移动网络应用。我已经缩小了一个JavaScript错误,我得到IE Mobile不支持'className'属性(IE4引擎......)。我正在尝试找到一种适用于所有浏览器的替代方案,只需更改代码(我已经有一些使用“className”的库。)

我能想到的最简单的方法是修改IE的元素原型以包含className(如果它没有它),问题是我不知道'className'的替代方案是什么在IE Mobile中。

我试过这个:

element.className = element.class;

这显然不起作用,因为class是JavaScript中的关键字而我的JS压缩器不喜欢它,并且它可能无论如何都无效。

除了在任何地方使用'setAttribute()',我需要修改一个元素的类,我可以使用的任何属性是否等同于className?

3 个答案:

答案 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);
}