單擊紅色退出按鈕會將播放器從 forEach 代碼中洗掉,但不會從 for 回圈中洗掉。
單擊藍色按鈕,然后單擊紅色退出按鈕以洗掉播放器。
如何讓 for 回圈代碼與 forEach 代碼一樣作業?
此代碼正在運行。
https://jsfiddle.net/n1t3kjdw/
function removePlayerHandler(evt) {
const el = evt.target;
const container = el.closest(".container");
const wrapper = container.querySelectorAll(".wrap");
wrapper.forEach(function(wrapper) {
if (wrapper.player) {
return removePlayer(wrapper);
}
});
}
我在這里做錯了什么?https://jsfiddle.net/rbwsL8hf/
為什么這段代碼不起作用,需要修復什么?
function removePlayerHandler(evt) {
const el = evt.target;
const container = el.closest(".container");
const wrappers = container.querySelectorAll(".wrap"); {
for (let i = 0; i < wrappers[i].length; i ) {
if (wrappers[i].player) {
return removePlayer(wrappers[i]);
}
}
}
}
uj5u.com熱心網友回復:
在您更改的代碼中,您已經進行了迭代條件檢查,wrappers[i].length而不是我認為的意圖wrappers.length。否則,您將在每次迭代時檢查是否i小于第 i 個包裝器的長度,該長度可能已定義或未定義。
function removePlayerHandler(evt) {
const el = evt.target;
const container = el.closest(".container");
const wrappers = container.querySelectorAll(".wrap"); {
for (let i = 0; i < wrappers[i].length; i ) { // HERE
if (wrappers[i].player) {
return removePlayer(wrappers[i]);
}
}
}
}
uj5u.com熱心網友回復:
作為@Salim 答案的補充,您的代碼中還有一個額外的括號,試試這個:
function removePlayerHandler(evt) {
const el = evt.target;
const container = el.closest(".container");
const wrappers = container.querySelectorAll(".wrap");
for (let i = 0; i < wrappers.length; i ) {
if (wrappers[i].player) {
return removePlayer(wrappers[i]);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/532064.html
上一篇:我想檢查學生的分數,基于平均分
