Отметить checkbox при переходе по ссылке не работает
знаю что здесь уже был этот вопрос но не знаю почему тот ответ(Отметить checkbox при переходе по ссылке) не сработал у меня вот мой код страницы с которой мы будем переходить
<html>
<body>
<a href="test3.html?checked=doyou">1 chek</a>
<a href="test3.html?checked=helpm">2 chek</a>
</body>
</html>
вот код самой страницы с checkbox на которую мы переходим
<html>
<body>
<script defer>
function autoCheck(){
var checked = getParameterByName('checked');
if (!checked) return;
var target = document.querySelector('input[type="checkbox"][name="'+ checked +'"]');
if (!target) return;
target.checked = true;
}
</script>
<input type="checkbox" name="doyou">1
<input type="checkbox" name="helpm">2
</body>
</html>
что я сделал не так или этот способ уже не работает?
Ответы (1 шт):
Во-первых, вы определяете функцию, но не вызываете ее. Во-вторых функции getParameterByName не существует. Вот пример кода, который должен работать. Небольшое замечание, не работает в старых браузерах. https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams#Browser_compatibility если нужна их поддержка, то можно использовать полифил https://www.npmjs.com/package/url-search-params-polyfill
<html>
<body>
<input type="checkbox" name="doyou">1
<input type="checkbox" name="helpm">2
<script defer>
function autoCheck(){
const urlParams = new URLSearchParams(window.location.search);
const checked = urlParams.get("checked");
if (!checked) {
return;
}
var target = document.querySelector('input[type="checkbox"][name="'+ checked +'"]');
if (!target) {
return;
}
target.checked = true;
}
autoCheck();
</script>
</body>
</html>
или второй вариант без URLSearchParams
<html>
<body>
<input type="checkbox" name="doyou">1
<input type="checkbox" name="helpm">2
<script defer>
function autoCheck(){
const checked = window.location.href.match(/\?.*?checked=([a-z]+)/) || [0, 0][1];
if (!checked) {
return;
}
var target = document.querySelector('input[type="checkbox"][name="'+ checked +'"]');
if (!target) {
return;
}
target.checked = true;
}
autoCheck();
</script>
</body>
</html>