Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

188
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!