Hola buenas. Mi programa funciona con document.write, pero al sustituirlo por innerHTML me arroja el siguiente error en consola: Uncaught...

Alejandro Jesús Morales Marcos

Alejandro Jesús Morales Marcos

Pregunta
studenthace 5 años

Hola buenas. Mi programa funciona con document.write, pero al sustituirlo por innerHTML me arroja el siguiente error en consola: Uncaught TypeError: Cannot read property ‘innerHTML’ of null

at HTMLInputElement.entregarDinero (cajero.js:54)

entregarDinero @ cajero.js:54

Decir que el id en html de la etiqueta <p> es resultado: <p id=“resultado”></p>

Adjunto código js:

class Billete { constructor(v, c) { this.valor = v; this.cantidad = c; } } function entregarDinero() { var t = document.getElementById("texto"); var dinero = parseInt(t.value); for (b of caja) { if (dinero > 0) { division = Math.floor(dinero/b.valor); if (division > b.cantidad) { papeles = b.cantidad; } else { papeles = division; } entregado.push(new Billete(b.valor, papeles)); dinero -= (b.valor * papeles); } } if (dinero > 0) { resultado.innerHTML = "El cajero no dispone de suficiente dinero"; } else { for (var e of entregado) { if (e.cantidad > 0) { resultado.innerHTML += e.cantidad + "Billetes de " + e.valor + "€ <br />"; } } } } var caja = []; caja.push(new Billete(50, 3)); caja.push(new Billete(20, 2)); caja.push(new Billete(10, 2)); var division = 0; var papeles = 0; var entregado = []; var resultado = document.getElementById("resultado"); var b = document.getElementById("boton"); b.addEventListener("click", entregarDinero);```
6 respuestas
para escribir tu comentario
    Fernanda Vieira Jófili

    Fernanda Vieira Jófili

    studenthace 5 años

    Interesante! Gracias por compartir la solución, ¡eso es muy importante!

    Alejandro Jesús Morales Marcos

    Alejandro Jesús Morales Marcos

    studenthace 5 años

    Solucioné el error yo mismo. Consistía en que la etiqueta <p> del párrafo dónde la variable resultado tenía que mostrar su valor por medio de innerHTML, estaba declarado en el archivo .html por debajo de la etiqueta <script>.

    Alejandro Jesús Morales Marcos

    Alejandro Jesús Morales Marcos

    studenthace 5 años

    Gracias por responder; Aquí el código HTML:

    &lt;code&gt;&lt;!DOCTYPE html&gt; &lt;html&gt; &lt;meta charset=&quot;utf-8&quot; /&gt; &lt;body&gt; &lt;p&gt;&lt;img src=&quot;cajero.gif&quot;&gt;&lt;/p&gt; &lt;p&gt;&lt;input type=&quot;number&quot; id=&quot;texto&quot; /&gt; &lt;input type=&quot;button&quot; value=&quot;Extraer&quot; id=&quot;boton&quot; /&gt;&lt;/p&gt; &lt;script src=&quot;cajero.js&quot;&gt;&lt;/script&gt; &lt;p id=&quot;resultado&quot;&gt;&lt;/p&gt; &lt;/body&gt; &lt;/html&gt;

    Aquí el console.log(resultado) : null cajero.js:60

    Ayrton Soto

    Ayrton Soto

    studenthace 5 años

    Puedes pasar el codigo del HTML tambien, o trata de hacer un console.log a resultado para ver si esta reconociendo el elemento html quizas eso ayude a ver el motivo del problema

    Alejandro Jesús Morales Marcos

    Alejandro Jesús Morales Marcos

    studenthace 5 años

    Ante todo gracias por la respuesta. He cambiado la línea:

    resultado.innerHTML += e.cantidad + &quot;Billetes de &quot; + e.valor + &quot;&lt;br /&gt;&quot;;

    por:

    resultado.innerHTML = resultado.innerHTML + e.cantidad + &quot;Billetes de &quot; + e.valor + &quot;&lt;br /&gt;&quot;;

    Y me sigue dando el mismo error: cajero.js:44 Uncaught TypeError: Cannot read property 'innerHTML' of null at HTMLInputElement.entregarDinero (cajero.js:44)

    José David Ureña Torres

    José David Ureña Torres

    studenthace 5 años

    Creo que es por la operacion aritmética "+=" con el innerHTML. Prueba hacer la suma en variables y luego incrustar el resultado en la etiqueta.

Curso Gratis de Programación Básica

Curso Gratis de Programación Básica

Programa desde cero, domina Javascript, entiende HTML y aprende de algoritmos. <strong>Sí, desde cero</strong>. Entenderás la lógica del código, cómo piensan los programadores y cómo programar juegos, proyectos y hasta robots y electrónica. Aprender a programar no es fácil, pero Platzi lo hace efectivo.

Curso Gratis de Programación Básica
Curso Gratis de Programación Básica

Curso Gratis de Programación Básica

Programa desde cero, domina Javascript, entiende HTML y aprende de algoritmos. <strong>Sí, desde cero</strong>. Entenderás la lógica del código, cómo piensan los programadores y cómo programar juegos, proyectos y hasta robots y electrónica. Aprender a programar no es fácil, pero Platzi lo hace efectivo.