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

191
Vistas
TypeError no detectado: no se pueden leer las propiedades de nulo (leyendo 'niños') en window.onload

Estoy tratando de obtener los hijos de un div, sin embargo, por alguna razón, no funcionará.

Obtengo el div a través del método getElementById y luego, cuando intento obtener los elementos secundarios de ese elemento, no lo reconoce y me arroja un error.

 window.onload = function(){ console.log("h") for (i in bookData ){ var current = bookData[i] var currentCodeN = current.codeName var currentHTMLElem = document.getElementById(toString(currentCodeN)) console.log(typeof(currentHTMLElem)) //returns 'object' console.log(typeof(currentHTMLElem.children)); //error console.log(currentHTMLElem.children.length); } }

¿Alguna idea de por qué sucede esto? Busqué este problema y configuré un evento para esperar a que se cargara toda la página. todavía no funciona

Error:

 Uncaught TypeError: Cannot read properties of null (reading 'children') at window.onload"

No estoy usando iFrame

ACTUALIZACIÓN: estaba usando toString en una cadena ya. Lo siento.

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

0

Hay algunas cosas que están pasando aquí.

 var currentHTMLElem = document.getElementById(toString(currentCodeN))

Esto hace que currentHTMLElem sea null . Volveré a por qué, pero es claramente nulo porque el mensaje de error te dice que lo es.

 console.log(typeof(currentHTMLElem)) //returns 'object'

Sí, si currentHTMLElem es nulo, typeof devolverá "object" . Así que ahí estás.

No sé qué es bookData , pero estoy seguro de que usar toString es incorrecto. Mira lo que hace toString para varios objetos:

toString(null) -> "[object Undefined]"

toString(12) -> "[object Undefined]"

toString(anythingatall) -> "[object Undefined]"

Eso es porque estás llamando al toString incorrecto. Llamar a toString sin un objeto usará la base Object.prototype.toString con un objeto indefinido. Si lo invoca con un objeto como toString.apply(12) , obtendrá la versión base que solo le indica el tipo ( [Object Number] ). En su lugar, querrá llamar a la versión sobrecargada: currentCodeN.toString() , que llamará a toString para cualquier tipo de currentCodeN . Para una cadena, esto solo devuelve la cadena, para un número devolverá una versión de cadena.

Sin embargo, eso generará un error currentCodeN es nulo o indefinido. No debería necesitar usar toString en absoluto. Supongo que ya es una cadena, así que intente simplemente:

 var currentHTMLElem = document.getElementById(current.codeName)

o para máxima seguridad:

 var currentHTMLElem = document.getElementById(current && current.codeName || '')

si eso todavía te da null , entonces el elemento no existe en el DOM.

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