问题描述
|
我有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
,这意味着它不完全像原始版本那样工作,但是它返回的数据相同。