Lo más probable es que el código JavaScript se esté ejecutando antes de que carguen los elementos HTML. Esto suele suceder cuando se colocar ya sea el código JavaScript o la inclusión del archivo JS en la cabecera del documento.
Si deseas conservar el código JavaScript en dicha parte del documento, tiene que ejecutar el código cuando se haya producido el evento
DOMContentLoaded
, el cual ocurre una vez que todos los elementos del documento —mas no el contenido multimedia que pudiera haber (fotos, audio, vídeos)— hayan cargado. Debes
registrarlo en el documento y ejecutar una función en la que las instrucciones serán las líneas de código JavaScript que tengas.
Código Javascript
:
Ver originaldocument.addEventListener("DOMContentLoaded", function(){
//Todo tu código JavaScript
}, false);
Otra forma de hacer esto es colocar el código JavaScript después de todos los elementos del documento y antes de la etiqueta
</body>
.
Código HTML:
Ver original<!DOCTYPE html>
<!-- Todos tus elementos -->
<!-- Puedes tenerlo "en línea" -->
<script type="text/javascript"> //Todo el código JavaScript
<!-- O incluido en un archivo externo -->
Un saludo