Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

308
Vistas
¿Por qué el foreach anidado dentro del bucle javascript no funciona?

Estoy tratando de verificar si las respuestas de un usuario son correctas. Las respuestas del usuario se almacenan en la variable "stad". Las opciones correctas se almacenan en la variable "collectie". Sin embargo, esta variable es una matriz con una matriz anidada. Entonces, primero recorro la "colección", verifico si el elemento de colección no es una matriz y, de lo contrario, verifico que el valor enviado esté dentro de este elemento de colección.

Si el elemento de colección es una matriz, tengo que modificar un poco la función para que la variable verifique si la respuesta está dentro de la matriz anidada.

tengo lo siguiente:

 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"; } } } } }

Sin embargo, aparece el error: item.value no está definido. Dentro de la consola, veo que el elemento es una colección de entradas y no una sola entrada.

¿Por qué esto no funciona?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

El problema principal parece estar en

 stad.push(document.getElementsByTagName("input"));

porque eso empuja la colección de elementos devueltos a stad como una referencia única (y también una colección HTML no es una matriz real). En su lugar, puede utilizar

 stad = Array.from(document.getElementsByTagName("input"));

En segundo lugar, en la primera rama de la instrucción if , donde antwoord no es una matriz, ¿qué significa if (antwoord.includes(item.value.toLowerCase())) ? Probablemente desee utilizar una comparación simple como if (antwoord === item.value.toLowerCase()) .

En tercer lugar, hay un error tipográfico Foreach en lugar de forEach en un lugar.

Cuarto, ¿está seguro de que desea recorrer todos los cuadros de entrada para cada entrada en la matriz principal de respuestas correctas? ¿No corresponde cada cuadro de entrada a una pregunta específica con una respuesta correcta específica o un conjunto de respuestas correctas?

about 4 years ago · Juan Pablo Isaza Denunciar

0

document.getElementsByTagName no devuelve una matriz, devuelve una colección HTML en vivo, que no se puede iterar con forEach, aunque puede hacer referencia a sus elementos por número de índice ( https://developer.mozilla.org/en-US/docs /Web/API/document/getElementsByTagName ).
Además, está empujando toda esta colección a la matriz stad como un elemento, por lo que ve que item es una colección de entradas: esa colección (de elementos HTML en vivo) es el único elemento en la matriz stad .

Como sugiere otra respuesta, en lugar de usar stad.push , simplemente asigne una matriz real a stad creando una matriz de la colección:

stad = Array.from(document.getElementsByTagName("input"));

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda