关于开发人员和JS的新知识(显然是一个简单的教程),使我陷入一个愚蠢的问题,该函数必须选择类别,而只是添加或删除属性。 它会添加(并隐藏),但不会删除(并让其出现)。
功能:
var showAndHideSongs = function(event, filter) {
// get all songs that match the genre of the filter
var songsByGenre = Array.from(
document.querySelectorAll('#playlist [data-genre="' + filter + '"]')
);
// if checkbox is checked, show songs
// otherwise, hide them
if (event.target.cheched) {
songsByGenre.forEach(function(song) {
song.removeAttribute("hidden");
});
} else {
songsByGenre.forEach(function(song) {
song.setAttribute("hidden", "true");
});
}
};
HTML:
<ol id="playlist">
<li data-genre="pop">
"Thank U, Next" by Arianna Grande
</li>
<li....
复选框是动态创建的:
var renderCheckLists = function(genres) {
app.innerHTML =
"<h2>Filter Songs</h2><h3>By Genre</h3>" +
genres
.map(function(genre) {
var html =
"<label>" +
'<input type="checkbox" checked data-filter="' +
genre +
'" checked>' +
genre +
"</label>";
return html;
})
除了解决方案,我几乎尝试了所有方法 如我所说,它已删除,但看起来“ removeAttibute”不起作用。
我在一个空白的测试项目中尝试了removeAttribute,并且实际上效果很好,所以问题就不存在了
预先感谢您的帮助