所以我对MOO工具非常不熟悉,每次使用函数时都会出现类型错误,比如hasClass或removeClass。我几乎没有使用MOO工具的经验,我完全失去了。我查看了文档,语法正确。
这是代码,错误发生在第354行:“TypeError:li.removeClass不是函数” http://pastebin.com/G63003DG
我检查了moo工具文档,removeClass的语法很好。运行最新版本的moo工具。
答案 0 :(得分:3)
通常,这意味着您尝试在不是 MooTools扩展DOM对象的对象上使用该函数。
几乎每当你从MooTools 获得一个DOM对象时,它都会在你获得它之前被扩展。对于MooTools可以扩展DOM元素的原型的任何浏览器也是如此。但旧版IE(IE8及更早版本)没有HTML元素原型,因此MooTools无法扩展原型,每个元素都必须手动扩展。如果直接从DOM属性(firstChild
,nextSibling
,...)获取元素,除非之前已经扩展,否则它将不会有MooTools的扩展。要扩展它,请将其传递给$()
函数:
$(li).removeClass("the-class");
同样,这基本上只出现在IE8(仍然广泛使用)和更早版本中,因为MooTools可以在其他浏览器上扩展HTML元素的原型;但旧版本的IE不提供元素原型,因此元素必须逐元素扩展。
以下是IE8中失败的示例:Live Copy | Live Source
var li = document.getElementById('theitem');
li.onclick = function() {
li.addClass('myClass');
};
一个在IE8中有效的示例(唯一的变化是li
=> $(li)
):Live Copy | Live Source
var li = document.getElementById('theitem');
li.onclick = function() {
$(li).addClass('myClass');
};