Как объединить два *.js в один?

709
24 ноября 2016, 10:22

Есть файл *.js для проекта из двух страниц. Часть кода для главной страницы выполняется, часть для внутренней - нет. Работает, только при подключении этих частей к страницам в виде отдельных файлов. В чем дело?

var link = document.querySelector(".contacts-btn");
        var popup = document.querySelector(".modal-write-us");
        var close = document.querySelector(".modal-close");
        var overlay = document.querySelector(".modal-overlay");
        var form = popup.querySelector("form");
        var name = popup.querySelector("[name=u-name]");
        var mail = popup.querySelector("[name=u-email]");
        var feedback = popup.querySelector("textarea");
        var openMap = document.querySelector(".map");
        var popupMap = document.querySelector(".modal-map");
        var closeMap = popupMap.querySelector(".modal-close");
        link.addEventListener("click", function(event) {
            event.preventDefault();
            popup.classList.add("modal-write-us-show");
            name.focus();
        });
        link.addEventListener("click", function(event) {
            event.preventDefault();
            overlay.classList.add("modal-overlay-show");
        });
        close.addEventListener("click", function(event) {
            event.preventDefault();
            popup.classList.remove("modal-write-us-show");
        });
        close.addEventListener("click", function(event) {
            event.preventDefault();
            overlay.classList.remove("modal-overlay-show");
            popup.classList.remove("modal-error");
        });
        form.addEventListener("submit", function() {
            if (!name.value || !mail.value || !feedback.value) {
                event.preventDefault();
                popup.classList.remove("modal-error");
      popup.offsetWidth = popup.offsetWidth;
                popup.classList.add("modal-error");
            } else {
                localStorage.setItem("name", name.value)
            };      
        });
        // Map Modal window
        openMap.addEventListener("click", function(event) {
            event.preventDefault();
            overlay.classList.add("modal-overlay-show");
        });
        openMap.addEventListener("click", function(event) {
            event.preventDefault();
            popupMap.classList.add("modal-map-show");
        });
        closeMap.addEventListener("click", function(event) {
            event.preventDefault();
            overlay.classList.remove("modal-overlay-show");
        });
        closeMap.addEventListener("click", function(event) {
            event.preventDefault();
            popupMap.classList.remove("modal-map-show");
        });
            // BOOK THE GOOD  - Не работает на Главной
    var buyIt = document.querySelector(".buy-it-btn");
    var bookIt = document.querySelector(".book-it-btn");
    var popupBuy = document.querySelector(".modal-order");
    var closePopup = document.querySelector(".modal-close");
    var closeToo = document.querySelector(".keep-on-btn");
    buyIt.addEventListener("click", function(event) {
        event.preventDefault();
        popupBuy.classList.add("modal-order-show");
        });
        bookIt.addEventListener("click", function(event) {
            event.preventDefault();
            popupBuy.classList.add("modal-order-show");
        });
        closePopup.addEventListener("click", function(event) {
            event.preventDefault();
            popupBuy.classList.remove("modal-order-show");
        });
        closeToo.addEventListener("click", function(event) {
            event.preventDefault();
            popupBuy.classList.remove("modal-order-show");
        });
Answer 1

http://www.w3schools.com/jsref/met_document_queryselector.asp

If no matches are found, null is returned.

(Если ничего не найдено, возвращает null.)

На второй странице

var form = popup.querySelector("form");

при значении popup null вызывает ошибку, прерывающую выполнение кода.

Проверяйте переменные на null перед использованием:

var form = popup? popup.querySelector("form") : null;
READ ALSO
Принудительно перерисовать элемент

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

Здравствуйте! Есть задача: по мере работы программы, выводить промежуточное состояние в таблицу. Для этого есть примерно такой код:.

638
Взять длину length коллекции после работы директивы ng-repeat

Взять длину length коллекции после работы директивы ng-repeat

Здравствуйте! Вот такая вот заминка получается, директива ng-repeat выводит в список.

436
Код зависает на функции JS

Код зависает на функции JS

Мой парсер падает на этой функции, ошибок не выводится, соответственно, он просто "думает" и не выводит ничего в консоль. .

437
Подправить JS код

Подправить JS код

Есть JS код который обрабатывает результаты теста(найден на просторах интернета), но он работает если в тесте 5 вопросов. Как сделать чтобы...

523