[英]why nested foreach within javascript loop not working?
我正在嘗試檢查用戶的答案是否正確。 用戶的答案存儲在變量“stad”中。 正確的選項存儲在變量“collectie”中。 但是,此變量是具有嵌套數組的數組。 所以我首先遍歷“collectie”,檢查collectie元素是否不是數組,如果不是,檢查提交的值是否在這個collectie元素內。
如果收集元素是一個數組,我必須稍微改變一下函數,以便變量檢查答案是否在嵌套數組中。
我有以下內容:
function nakijken() {
var collectie = ["parijs", "8", "ijsselmeer", ["Volkswagen", "Audi", "Opel", "Porsche", "BMW", "Mercedes", "Mercedes-Benz"],
["Texel", "Vlieland", "Terschelling", "Ameland", "Schiermonnikoog"]];
var stad = [];
var a = 0;
stad.push(document.getElementsByTagName("input"));
collectie.forEach(uitpakken);
function uitpakken(antwoord) {
if (!Array.isArray(antwoord)) {
stad.forEach(myfunction);
function myfunction(item) {
if (antwoord.includes(item.value.toLowerCase())) {
item.style.background = "green";
a++;
} else {
antwoord.style.background = "red";
}
}
}
else{
antwoord.Foreach(uitpakken);
function uitpakken(antwoord) {
stad.forEach(mysecondfunction);
function mysecondfunction(item) {
if (antwoord.includes(item.value.toLowerCase())) {
item.style.background = "green";
a++;
} else {
antwoord.style.background = "red";
}
}
}
}
}
主要問題似乎在
stad.push(document.getElementsByTagName("input"));
document.getElementsByTagName<\/code>不<\/em>返回一個數組,它返回一個實時的 HTML 集合,它不能被 forEach 迭代,盡管你可以通過索引號引用它的元素(
https:\/\/developer.mozilla.org\/en-US\/docs \/Web\/API\/document\/getElementsByTagName<\/a> )。
此外,您隨后會將整個集合作為一個項目推送到
stad<\/code>數組,這就是為什么您會看到
item<\/code>是輸入的集合——該集合(實時 HTML 元素)是
stad<\/code>數組中的唯一<\/em>項目。
正如另一個答案所暗示的那樣,不要使用
stad.push<\/code> ,而是通過從集合中創建一個數組來簡單地為
stad<\/code>分配一個真實數組:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.