我的工作需要在IE浏览器的移动工作的移动Web应用程序。我已经缩小JavaScript错误我得到IE浏览器手机不支持“className”属性(IE4引擎...)。我试图发现,在所有浏览器以最少的代码修改工作的一个替代方案(我已经有使用“className”一些库)。

我能想到的最简单的方法是修改IE的元素的原型,包括类名(如果没有的话),问题是我不知道是什么替代“className”是在IE中移动

我试图这样:

element.className = element.class;

这显然是行不通的,因为class是JavaScript的一个关键词,我的JS压缩机不喜欢它,它可能不是有效的,也。

比使用其他“的setAttribute()”到处我需要修改的元素的类,是否有任何属性我可以使用的是相当于的className?

有帮助吗?

解决方案

虽然不能避免使用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));

其他提示

没有属性,没有。我怕你坚持的getAttribute()和setAttribute()。

这是什么约翰·米利金,你甚至可以让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);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top