@KrotKrotKrotTest

Как остановить проверку?

Есть проверка url. Если строка содержит параметр q=, то в нее добавляется значение из поля. Проблема в том, что значение дописывается бесконечно. Как остановить бесконечную работу условия и сделать так, чтобы если q содержит значение, то условие не повторялось?

if (window.location.href.indexOf("q=")) {
      window.location.href += searchInput.value;
      console.log("window.location.href", window.location.href);
    }
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Ваш код очень бажный. Во-первых, вы не проверяете результат выполнения indexOf и проверка работает ровно наоборот. Во-вторых, значение поискового поля вы добавляете не в виде get-параметра, а прямо в тело адреса, что снова делает предыдущую проверку нерабочей. Ну и наконец, даже если всё это исправить, у вас всё равно будет баг - любой get-параметр, название которого заканчивается на "q", будет попадать под условие и подстановка не произойдёт.

Максимально тупое решение в лоб с перезагрузкой страницы:
if (
    window.location.search.indexOf('?q=') === -1 &&
    window.location.search.indexOf('&q=') === -1
) {
    window.location.search += (window.location.search ? '&' : '?' ) + 'q=' + searchInput.value;
}


В современном же js есть куда более удобные инструменты для решения этой задачи:
https://developer.mozilla.org/en-US/docs/Web/API/U...
https://developer.mozilla.org/ru/docs/Web/API/Hist...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
21 нояб. 2024, в 19:31
500 руб./за проект
21 нояб. 2024, в 19:28
200000 руб./за проект