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

146
Vistas
.empuje fallido. Funciona sin almacenamiento local

No puedo obtener la entrada del usuario para enviar al almacenamiento local. Cuando mi variable quizData es una matriz vacía, funciona bien,

 let quizData = JSON.parse(localStorage.getItem('MyQuiz'));

y cambiarlo de nuevo a esto funciona porque (supongo) ya hay información en LS,

 let quizData = JSON.parse(localStorage.getItem('MyQuiz'));

pero borrar LS hará que vuelva a fallar. Cualquier ayuda que pueda obtener sería muy apreciada.

 let quizData = JSON.parse(localStorage.getItem('MyQuiz')); const addQuiz = (ev) => { ev.preventDefault(); let quizForm = { question: document.getElementById('question-input').value, a: document.getElementById('a-input').value, b: document.getElementById('b-input').value, c: document.getElementById('c-input').value, d: document.getElementById('d-input').value, correct: document.getElementById('correct-input').value, }; quizData.push(quizForm); document.forms[0].reset(); console.warn('added', { quizData }); localStorage.setItem('MyQuiz', JSON.stringify(quizData)); }; document.addEventListener('DOMContentLoaded', () => { document.getElementById('submitForm').addEventListener('click', addQuiz); console.log(quizData); });

y el error custom-questions.js:26

TypeError no capturado: no se pueden leer las propiedades de nulo (leyendo 'push') en HTMLButtonElement.addQuiz

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

0

Simplemente puede configurar quizData en una nueva matriz si no hay nada en localStorage .

 let quizData = JSON.parse(localStorage.getItem('MyQuiz')) ?? [];

Si quizData se actualiza en otro lugar, es mejor recuperar la matriz más reciente antes de actualizarla. Para que pueda obtener los últimos quizData dentro addQuiz .

 const addQuiz = (ev) => { ev.preventDefault(); let quizForm = { question: document.getElementById('question-input').value, a: document.getElementById('a-input').value, b: document.getElementById('b-input').value, c: document.getElementById('c-input').value, d: document.getElementById('d-input').value, correct: document.getElementById('correct-input').value, }; const quizData = JSON.parse(localStorage.getItem('MyQuiz')) ?? []; quizData.push(quizForm); document.forms[0].reset(); console.warn('added', { quizData }); localStorage.setItem('MyQuiz', JSON.stringify(quizData)); };
about 4 years ago · Santiago Trujillo Denunciar

0

Debe inicializar quizData como una matriz vacía si es nulo o indefinido.

 let quizData = JSON.parse(localStorage.getItem('MyQuiz')) || [];
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