Отметить 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 шт):

Автор решения: Ilia Brykin

Во-первых, вы определяете функцию, но не вызываете ее. Во-вторых функции 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>

→ Ссылка