Не работает переход в "error.html" при условии, что в полях ввода( inp1,inp2) пусто
let inp1 = document.getElementById("inp1");
let inp2 = document.getElementById("inp2");
let btn1 = document.getElementById("btn1");
let btn2 = document.getElementById("btn2")
let h1 = document.querySelector(".h1");
if (btn1 !== null) {
btn1.addEventListener("click", function() {
localStorage.setItem("name", inp1.value);
localStorage.setItem("surname", inp2.value);
location.href = "profile.html";
})
}
if (btn2 !== null) {
btn2.addEventListener("click", function() {
localStorage.clear();
location.href = "index.html";
})
}
if (inp1 !== ' ') {
btn1.addEventListener("click", function() {
localStorage.getItem("name", inp1.value);
localStorage.getItem("surname", inp2.value);
location.assign("error.html");
})
}
Ответы (1 шт):
Условие «в полях ввода inp1 и inp2 пусто», дословно можно записать так:
(inp1.value === '') && (inp2.value === '')
Условие inp1 !== ' ' из кода в вопросе, проверяет совсем другое: строгое неравенство элемента(!) строке состоящей из одного пробела. Конечно же, это условие выполняется всегда, и второй обработчик клика будет добавлен кнопке btn1 в любом случае.
Переход на error.html не работает по той причине, что сначала выполняется первый обработчик клика кнопки btn1 (в котором выполняется переход на profile.html): при переходе на другую страницу, выполнение скриптов на текущей странице сразу же прерывается... поэтому, второй обработчик той же кнопки (тот что с переходом на error.html, он добавлен вторым) никогда не выполнится.
Выражения с вызовами localStorage.getItem - по факту, ничего полезного не делают (читается значение, затем результат возвращается "в никуда"). Если планировалось считывать значения и заполнять ими поля ввода, то это можно сделать (например) так:
inp1.value = localStorage.getItem('name') || inp1.value;
inp2.value = localStorage.getItem('surname') || inp2.value;
Но заполнение полей ввода за миллисекунды до редиректа на другую страницу - не имеет практического смысла, даже если бы этот редирект выполнялся.