当浏览器本身不实现它时,创建我自己的classList对象

问题描述

| 我有JavaScript代码,可以使用“ 0”对象添加删除类。 在我收到有关该代码的投诉之前,该代码已正常运行,并能按预期正常工作,因为它在Opera和IE8中均无法运行。 我不想使用任何框架或代码库。我想最大程度地减少我必须在程序中更改的代码,因此我想创建自己的
classList
对象并将其添加到node对象。我已经有了以下代码
if (typeof(document.createElement(\'input\').classList) == \'undefined\') {
    HTMLElement.prototype.classList = new function () {
        this.add = function (addClass) {
            this.className += addClass;
        }
    }
}
这显然是行不通的。 问题是:我无法像这样访问此对象的“ 3”。我该怎么做?如何使该对象工作与原始对象相似或完全相同?     

解决方法

Mozilla在这里列出了classList垫片: http://developer.mozilla.org/en/DOM/element.classList 代码中有很多事情要做,但看起来就是您要追求的。     ,除了扩展原型之外,您还可以创建一个返回所需值的辅助函数:
classList = function ( elem ) {
    return elem.className.replace(/\\s+/g,\' \').split(\' \');
};
然后,您将只调用
classList(elem)
,而不是调用
elem.classList
,这意味着它不完全像原始版本那样工作,但是它返回的数据相同。