4 回答

TA貢獻1831條經驗 獲得超9個贊
todo.classList === 'completed'
和有什么區別todo.classList.contains('completed')
classList
與字符串進行比較是沒有意義的,因為它是一種類似數組的數據結構。去吧el.classList.contains(str)
。
如果您確定您的元素只有一個 CSS 類,您可以這樣做el.className === 'completed'
,或者如果它至少保證是第一類,則el.classList[0] === 'completed'
。但你不應該。
const todo = document.querySelector('div');
console.log(todo.className === 'completed'); // true
console.log(todo.classList.contains('completed')); // true
<div class="completed"></div>

TA貢獻1805條經驗 獲得超9個贊
.classList
返回一個DOMTokenList
。DOMTokenList
與數組的工作方式類似,但沒有它的所有 等等 很酷的東西.map()
。.forEach()
todo.classList === 'completed'
無法像您希望的那樣將 aDOMTokenList
與 a進行比較String
。
todo.classList.value === 'completed'
僅當唯一的類todo
是completed
. 這不應該被使用。
todo.classList.contains('completed')
如果 will 的至少一類是 ,則將todo
起作用completed
。這是最好的方法。
以下是使用DOMTokenList
s 時可能需要的一些技巧:
[...todo.classList]; //convert to array
todo.classList[0]; //unofficial way to get the nth class name
todo.classList.item(0); //standard way to get the nth class name

TA貢獻2037條經驗 獲得超6個贊
您的用法不正確。
包含可以與類列表一起使用。您不能直接將條件放在類列表方法上。
event.target.classList.add('class3');
event.target.classList.remove('class1');
event.target.classList.contains('class2'); // To check class is present or not it returns boolean value.
event.target.classList.toggle('class4');
添加回答
舉報