你能幫忙看看下面的 JS DOM 例子嗎?
我在示例 1 中指定的if-else 結構有效,但我在示例 2 中指定的switch-case 結構不起作用。switch-case 結構不起作用,盡管它們的功能相同。為什么 ?
謝謝
--- 示例 1 / 作品 ---
fontSizes.forEach(size => {
size.addEventListener('click', () => {
if(size.classList.contains('font-size-1')) {
.....
} else if (size.classList.contains('font-size-2')) {
.....
}
})
})
--- 示例 2 / 不起作用 ---
fontSizes.forEach(size => {
size.addEventListener('click', () => {
switch (size.classList.contains) {
case 'font-size-1':
....
break;
case 'font-size-2':
....
break;
}
})
})
uj5u.com熱心網友回復:
請不要說它們不一樣。在第一個中,您呼叫函式 add 來獲取輸出,而在第二個中,您通過 switch 陳述句傳遞的只是對函式的參考。size.classlist.contains是一個需要引數的函式。請知道區別。
uj5u.com熱心網友回復:
您沒有switch正確使用,您正在檢查size.classList.contains哪些指向帶有字串(如font-size-1)的函式,而不是比較實際值。
您可以使用split(使用includes功能)或size.classList.contains在每種情況下使用
看看這里: https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/includes https://developer.mozilla.org/en-US/docs/Web/ API/DOMTokenList/contains 當一個元素有多個類時如何在switch陳述句中檢查className
uj5u.com熱心網友回復:
contains是一種方法。
所以你不能使用:
switch(size.classList.contains){case 'class1':...}
相反,您應該使用if(size.classList.contains('class1')){}
如果您想要更簡潔的代碼,您可以為這些案例創建一個陣列(或物件)并將ifs 放在一個回圈中。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/481767.html
標籤:javascript if 语句 dom 开关语句 dom 事件
