Tengo una duda, estaba usando innerHTML y me sale este error: Uncaught TypeError: Cannot read property ‘innerHTML’ of null at prueba.js:4...

Pregunta de la clase:
Conclusiones del curso
David Farinango

David Farinango

Pregunta
studenthace 7 años

Tengo una duda, estaba usando innerHTML y me sale este error: Uncaught TypeError: Cannot read property ‘innerHTML’ of null

at prueba.js:41

Aqui esta el codigo HTML

<body> <div class="box" id="ya"> <a href="eproduct.html"> <img src="./imagenes/products/3.png" alt="productos" height="250" width="200"> </a> </div> </body>

y en javascript

document.getElementById("ya").innerHTML +='<h6><strong>Hola</strong> <br>que tal</h6>';

Según leí en algún post sobre este error, se da comunmente porque la secuencia de datos esta en la cabecera del html, es decir que añado js en el head del html, y cuando la variable intenta encontrar getElementById(“ya”) la variable id aun no existe, por lo que sale ese error, de que manera puedo solucionar para que no salga mas este error? ya que si hago este código si me funciona:

Solo dentro del html

<body> <div class="box" id="ya"> <a href="eproduct.html"> <img src="./imagenes/products/3.png" alt="productos" height="250" width="200"> </a> </div> <script> document.getElementById("ya").innerHTML +='<h6><strong>Hola</strong> <br>que tal</h6>'; </script> </body>

Pero lo que quiero es validar que todos los id del html ya esten creados correctamente para ser usado en un archivo javascript externo, agradecería muchísimo su ayuda.

4 respuestas
para escribir tu comentario
    Roger Carlos Ariel Alba

    Roger Carlos Ariel Alba

    studenthace 7 años

    Hola de nuevo @jdfarinango

    He revisado despacio tu codigo, encontre un par de detalles.

    1. div y class deben ir separados
    2. a y href tambien

    puede que por eso no hubiese reconocido correctamente el HTML y por lo tanto no encontraba a que llamar en el JS

    te coloco el codigo que he probado, revisalo y me cuentas:

    <html> <head> <title> Example </title> </head> <body> <div class="box" id="ya"> <a href="eproduct.html"> <img src="./imagenes/products/3.png" alt="productos"> </a> </div> </body> </html>

    junto a eso coloque el JS externo de esta forma

    document.getElementById('ya'); ya.innerHTML +='<h6><strong>Hola</strong><br>que tal </h6>';

    Esto lo hice con el codigo que tu colocaste y funciona.

    Espero ser de ayuda, me cuentas.

    David Farinango

    David Farinango

    studenthace 7 años

    Hola @CarlosAlba, ya le intente tu solución poniendo asi en el archivo js:

    var boxYa = document.getElementById("ya"); boxYa.innerHTML +='<h6><strong>Hola</strong> <br>que tal</h6>';

    Pero sigue saliendome el mismo error en consola: Uncaught TypeError: Cannot read property ‘innerHTML’ of null

    at prueba.js:43, al ejecutar el .innerHTML

    David Farinango

    David Farinango

    studenthace 7 años
    <code>
    Roger Carlos Ariel Alba

    Roger Carlos Ariel Alba

    studenthace 7 años

    Hola!

    el dogument.getElementById lo usas para almacenar el “Elemento” en una variable. Por ejemplo la varable “boxYa” luego esa variable es la que recibe el .innerHTML

    boxYa.innerHTML…

    Espero te sirva.

    Saludos!

Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.

Fundamentos de JavaScript 2018
Fundamentos de JavaScript 2018

Fundamentos de JavaScript 2018

JavaScript es un lenguaje de programación que se trabaja desde el navegador. Construye programas, conoce el entorno, los condicionales y las estructuras repetitivas. Aprende cuáles son y cómo se declaran las variables y las funciones de JS.