Estoy tratando de elegir un valor aleatorio para cada fila de la matriz en js, sin embargo, cuando ejecuto el código, aparece TypeError no capturado: no puedo acceder a la propiedad "innerHTML", document.getElementById (...) es nulo aunque el guión está en la parte inferior de
<p id="crit1"></p> <p id="crit2"></p> <p id="crit3"></p> <p id="crit4"></p> <p id="crit5"></p> <script> var criteria = [ ['opt1', 'opt2'], ['opt3', 'opt4'], ['opt5', 'opt6'], ['opt7', 'opt8'], ['opt9', 'opt10'] ]; for (var step = 0; step <5; step++){ var rand = Math.round(Math.random()); //genrates either 0 or 1 if (rand == 1) { document.getElementById('crit'+ step).innerHTML = criteria[step][1]; var answ = answ +1; } else { document.getElementById('crit'+ step).innerHTML = criteria[step][0]; } }Está fallando porque su contador de step comienza en 0 pero no tiene ningún elemento con ID crit0 .
Si agrega un elemento crit0 o comienza su contador en 1, el error desaparece.
También puede ser útil incluir una verificación nula para document.getElementByID() para evitar generar errores cuando no puede encontrar el elemento:
const critElement = document.getElementById('crit' + step); if (critElement) { critElement.innerHTML = criteria[step][0]; }El paso es comenzar desde 0. Entonces, la primera iteración encontrará el elemento con id=crit0 . No hay identificación con ese nombre. Puede cambiar la iteración de inicio de 1 en su lugar.