我正在尝试选择文档的所有li
标记并检查它是否为hasClassName('yes')
,如果有,则将其删除。但我遇到了类型错误:Object [object HTMLLIElement], has no method 'hasClassName'
错误。
这是DOM方法:
document.observe("dom:loaded", function() {
$(document.body).select('input').each(function(element) {
element.observe('click', function() {
init();
});
init();
});
});
前面的代码将使用init函数并检查是否有检查输入并将它们添加为“yes”类名,但是如果我取消检查这些输入,则该类仍然存在。 这是我正在尝试动态的功能(添加和删除类'是');
function init() {
$(document.body).select('input').each(function(element) {
if (element.checked) {
element.up('li').addClassName('yes');
}
if ($(document.body).select('li').hasClassName('yes')) {
element.removeClassName('yes');
}
})
}
你能帮我解决这个函数的最后一部分吗,所以removeclassname方法可以工作吗?谢谢。
答案 0 :(得分:1)
$(document.body).select('li')
返回一个集合,而不是一个元素,对吧?我认为你想要:
if (element.hasClassName('yes')) {
element.removeClassName('yes');
}
但是,您的逻辑似乎存在缺陷 - 如果检查输入,则首先添加类,然后立即将其删除。你错过了else
吗?也许更像是:
function init() {
$(document.body).select('input').each(function(element) {
if (element.checked) {
element.up('li').addClassName('yes');
}
else {
element.up('li').removeClassName('yes');
}
})
}
答案 1 :(得分:0)
等一下 - “select”将返回一个元素数组。 “hasClassName”函数是Element上的函数,而不是Array或Enumerable。你错过了“each()”图层。
$$('li').each(function(li) {
if (li.hasClassName('yes')) li.removeClassName('yes');
});