Uncaught TypeError: Невозможно прочитать свойство 'style' для null в pra c. js: 3 - PullRequest
0 голосов
/ 07 апреля 2020
var hi = document.querySelector("h1");
hi.style.color = "red";

Этот двухстрочный код задания цвета для h1 с использованием DOM дает ОШИБКУ

Uncaught TypeError: Невозможно прочитать свойство 'style' для null в pra c. js: 3

при записи в отдельный файл javascript, тогда как те же две строки отлично работают в консоли и дают желаемый эффект.


HTML:

<!DOCTYPE html>
<html>
<head>
<title>Experiments</title>
<script src = "prac.js"></script>
</head>
<body>
<h1>Hey there!</h1>
</body>
</html>

Вот демонстрационная версия вопроса:

var hi = document.querySelector("h1");
hi.style.color = "red";

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Поскольку неясно, как вы используете JavaScript, определить реальные проблемы сложно.
Однако давайте предположим, что вы используете JavaScript внутри одного и того же файла HTML, тогда написанный вами код работает нормально, вы можете проверить ниже фрагмент кода.

 <!DOCTYPE html>
 <html>
    <head>
        <title>Experiments</title>
        <script src = "prac.js"></script>
    </head>
    <body>
       <h1>Hey there!</h1>
       <script>
          var hi = document.querySelector("h1");
          hi.style.color = "red";
        </script>
    </body>
 </html>

Поскольку в основном мы манипулируем DOM с помощью JavaScript, хорошей практикой является загрузка JavaScript из другого файла (или если вы используете Javascript на той же странице) внизу вашего HTML содержимого, непосредственно перед тегом </body>, так как до этого большая часть HTML содержимого загружалась бы для использования DOM.

Если ваш код JavaScript находится внутри par c. js файла, то вам нужно добавить этот файл чуть выше тега </body>, как показано в приведенном ниже коде .

Ваш HTML код

<!DOCTYPE html>
<html>
   <head>
      <title>Experiments</title>
   </head>
   <body>
      <h1>Hey there!</h1>
      <script src = "prac.js"></script>
   </body>
</html>


Ваш JavaScript код

 var hi = document.querySelector("h1");
 hi.style.color = "red";
0 голосов
/ 07 апреля 2020

Вероятно, ваш скрипт выполняется до DOM рендеринга. В соответствии с рекомендациями Pala sh, поместите тег сценария в конец тега body.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...