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

204
Vistas
No se puede leer la propiedad .length de undefined (a veces)

Estoy tratando de obtener valores de casilla de verificación como una matriz, para luego poder usarlos como parte de una solicitud GET.

Las casillas de verificación son así:

 <input type="checkbox" name="diet" value="gluten"/> <input type="checkbox" name="diet" value="vegetarian"/> <input type="checkbox" name="diet" value="vegan"/>

Los he (casi) atrapado con esto:

 function getCheckboxValues(form){ var values= []; var diet = form.diet; for (let i = 0; i <diet.length; i++) { if (diet[i].checked) { values.push(diet[i].value); } } return values; }

Entonces quiero meterlos en:

 var reqDiet = []; //global

Entonces puedo fusionarlo en mis parámetros de obtención

 document.getElementById("submit-btn").addEventListener("click", function (){ reqParams = "&diet="+reqDiet+", getRecipe(ASK_RECIPE, reqParams) })
 async function getRecipe(reqRecipe, reqParameters){ let response = await fetch(reqRecipe+API_KEY+reqParameters); recipe = await response.json(); let recipeStored = JSON.stringify(recipe); sessionStorage.setItem("recipe",recipeStored); };

El problema es que si ejecuto getCheckboxValues("form_id") en la consola, devuelve la matriz correcta con elementos, pero si hago algo como

 reqDiet = getCheckboxValues("form_id");

Consola dice:

TypeError no capturado (en promesa): no se pueden leer las propiedades de undefined (leyendo 'longitud') en getCheckboxValues

Lo que puedo entender de esto es que mi programa no reconoce "diet.length" como una matriz cuando hago el último, pero lo reconoce cuando ejecuto la función por sí mismo. Prefiero hacer esto en Vanilla JS ya que soy nuevo aquí y trato de hacer estos pequeños proyectos.

PD: se agradece cualquier comentario en la publicación, ya que es la primera y creo que es bastante grande:/ lo siento.

about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Debe hacer reqDiet = getCheckboxValues(document.getElementById('form_id'))

La función espera un nodo DOM y no una cadena, por lo tanto, obtiene ese error.

about 4 years ago · Santiago Trujillo 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