сценарий во внешнем файле

169
22 августа 2018, 16:30

Сценарий находится во внешнем файле. Происходит ошибка

script.js:7 Uncaught TypeError: Cannot read property 'addEventListener' of null at script.js:7 (anonymous) @ script.js:7 load (async) (anonymous) @ script.js:1

js/script

window.addEventListener('load', function () {
 document.querySelector('#btn1').addEventListener('click', function () {
   location.href = "./2.html";
  });
 document.querySelector('#btn2').addEventListener('click', function () {
   location.href = "./1.html";
  });
});

1.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="css/style.css">
</head>
<body>
 <h1>1</h1>
 <button id="btn1">go to 2</button>
</body>
 <script src="js/script.js"></script>
</html>

2.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="css/style.css">
</head>
<body>
 <h1>2</h1>
 <button id="btn2">go to 1</button>
</body>
 <script src="js/script.js"></script>
</html>

Если сценарий вополнять в файлах ошибки не происходит.

1.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="css/style.css">
</head>
<body>
 <h1>1</h1>
 <button id="btn1">go to 2</button>
</body>
 <script>
  window.addEventListener('load', function () {
   document.querySelector('#btn1').addEventListener('click', function () {
    location.href = "./2.html";
   });
  });
 </script>
</html>

2.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <link rel="stylesheet" href="css/style.css">
</head>
<body>
<h1>2</h1>
<button id="btn2">go to 1</button>
</body>
 <script>
  window.addEventListener('load', function () {
   document.querySelector('#btn2').addEventListener('click', function () {
    location.href = "./1.html";
   });
  });
 </script>
</html>

Не могу понять, подскажите. Спасибо.

Answer 1

Добавьте проверку наличия элемента, перед назначением обработчика.

window.addEventListener('load', function () { 
 
 var btn1 = document.querySelector('#btn1'); 
 var btn2 = document.querySelector('#btn2'); 
   
  if (btn1) { 
    btn1.addEventListener('click', function () { 
      location.href = "./2.html"; 
    }); 
  } 
   
  if (btn2) { 
    btn2.addEventListener('click', function () { 
      location.href = "./1.html"; 
    }); 
  } 
});

READ ALSO
Как объединить 2+ метода преобразования текста

Как объединить 2+ метода преобразования текста

Надо бы, чтобы одновременно пробелы превращались в <br>, и первая буква становилась заглавная

181
Как поставить задержку на наведение JQuery?

Как поставить задержку на наведение JQuery?

Делаю выпадающие менюПробовал уже добавлять setTimeout, но он вообще перестает работать

181
Не могу установить слайдер (PgwSlider) на сайт

Не могу установить слайдер (PgwSlider) на сайт

Помогите пожалуйста установить слайдер на сайт

146
как удалить элемент со списка

как удалить элемент со списка

после добавления элементов в список, при клике на какой-то элемент нужно удалить его

266