替代';类名';在IE Mobile的JavaScript中?

替代';类名';在IE Mobile的JavaScript中?,javascript,ie-mobile,Javascript,Ie Mobile,我正在开发一个需要在IE mobile中运行的移动web应用程序。我已经缩小了IE Mobile不支持“className”属性(IE4引擎…)的JavaScript错误范围。我正试图找到一种可以在所有浏览器中使用最小代码更改的替代方法(我已经有一些库使用了“className”) 我能想到的最简单的方法是修改IE的元素原型以包含className(如果它没有),问题是我不知道IE Mobile中除了“className”之外还有什么选择 我试过这个: element.className = e

我正在开发一个需要在IE mobile中运行的移动web应用程序。我已经缩小了IE Mobile不支持“
className
”属性(IE4引擎…)的JavaScript错误范围。我正试图找到一种可以在所有浏览器中使用最小代码更改的替代方法(我已经有一些库使用了“
className
”)

我能想到的最简单的方法是修改IE的元素原型以包含className(如果它没有),问题是我不知道IE Mobile中除了“
className
”之外还有什么选择

我试过这个:

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


除了在我需要修改元素类的任何地方使用“setAttribute()”之外,我还可以使用任何与className等效的属性吗?

没有属性,没有。恐怕您只能使用getAttribute()和setAttribute()。

没有属性,没有。恐怕您只能使用getAttribute()和setAttribute()。此代码未经测试,但应能正常工作:

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));

尽管您无法避免使用
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));

继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);
}

继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);
}

另外,考虑到元素可以有多个类,您甚至可能(我不知道您的应用程序有多复杂)希望使这些函数足够高级,可以添加/删除特定类,而不需要用户进行大量字符串解析来保留现有类。我将把那件事的细节留给你。考虑到元素可以有多个类,您甚至可能(我不知道您的应用程序有多复杂)希望使这些函数足够高级,可以添加/删除特定类,而不需要用户进行大量的字符串解析来保留现有类。我将把细节留给你“…IE4引擎”-哎哟!我觉得支持IE6很难!“…IE4引擎”-哎哟!我觉得支持IE6很难!