Одинаковые элементы DOM на разных страницах HTML

Я думаю, что мой вопрос немного глуп, но у меня есть проблема. Есть несколько html-страниц, например: index.html, rooms.html и т. Д. И файл main.js со скриптами для всех.html-страниц. Проблема в том, что у меня есть переменные, как

const HTMLelement = document.querySelector('.className');

и некоторые функции для работы с этим HTML-элементом. Но этот элемент есть только на странице index.html, и когда я нахожусь на странице rooms.html, у меня возникает ошибка, поскольку HTMLelement не определен, а другой сценарий не существует (это важно, так как некоторые HTML-файлы создаются сценарием). Также В main.js у меня есть сценарии для всех страниц, поэтому я не могу создать новый файл.js... Итак, каков наилучший способ separate скрипты для разных html страниц?

2 ответа

Здесь у вас есть несколько способов решить проблему

Создайте отдельный скрипт для каждой страницы

  • rooms.html -> rooms.js
  • index.html -> index.js

Проверка существования узлов, прежде чем что-то делать

if(document.querySelectorAll('.className').length == 0){
     // do things
}

Проверка текущей страницы, прежде чем что-то делать

if(window.location.pathname.indexOf('rooms.html') != -1){
     // do things
}

Надеюсь, поможет

Всегда проверяйте, что элемент существует, прежде чем пытаться его использовать.

const oneEl = document.querySelector('.one');
if (oneEl) {
  oneEl.setAttribute('title', 'This is one');
}

// Below I am trying to get an element by the wrong class name.
const twoEl = document.querySelector('.two');
if (twoEl) {
  // This code will not run
  twoEl.setAttribute('title', 'This is two');
}
<div class="one">One</div>
<div class="too">Two</div>

Другие вопросы по тегам