Вероятно, вы включаете тег <script>
внутри тега <head>
, поэтому сценарий выполняется до того, как элементы монтируются в DOM, и вызовы getElementById()
возвращают null
.
В этом случае вы можете переместить тег <script>
внутри тега <body>
в качестве его последнего дочернего элемента. Хотя это не гарантирует, что вся страница загружена перед запуском вашего скрипта, это гарантирует, что все элементы до нее будут вставлены в DOM
.
Итак, вместо этого:
<html>
...
<script type="text/javascript">...</script>
<body>
...
</body>
</html>
Вы можете сделать это:
<html>
...
<body>
...
<script type="text/javascript">...</script>
</body>
</html>
Вы также можете дождаться события load
из window
перед запуском ваших скриптов (например, window.addEventListener('load', ...)
, что делает размещение тега <script>
не имеет значения, но это может отложить ваше выполнение намного дольше, чем необходимо, поскольку он ожидает загрузки всех элементов, включая изображения или видео.