1

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

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

我试过这个:

element.className = element.class;

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

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

4

3 回答 3

2

虽然您无法避免使用setAttribute(),但您可以从 jQuery 剧本中取出一行并使用带有可选参数的辅助过程。此代码未经测试,但应该可以工作:

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));
于 2009-04-13T18:21:28.460 回答
1

没有属性,没有。恐怕你被 getAttribute() 和 setAttribute() 困住了。

于 2009-04-08T04:01:51.933 回答
1

按照 John Millikin 的做法,您甚至可以将该函数作为 IE 元素原型的一部分:

Element.prototype.getClass = function() {
    return obj.getAttribute ('class');
}
Element.prototype.setClass = function(newClass) {
    return obj.setAttribute('class', newClass);
}

或者如果你想要一个像约翰提供的组合方法......

Element.prototype.className = function(newClass) {
    if (!newClass)
        return this.getClass();
    return this.setClass(newClass);
}
于 2009-04-14T17:31:45.983 回答