#javascript #html #checkbox
Вопрос:
Я пытаюсь предварительно заполнить флажки на основе параметров URL-адреса. У меня нет опыта работы с javascript, поэтому я не могу заставить другие решения работать на меня.
Рассмотрим следующую настройку:
<form method='GET'>
<input type="checkbox" name="a" value="1" id="1"/>
<input type="checkbox" name="a" value="2" id="2"/>
<input type="checkbox" name="a" value="3" id="3"/>
<button type="submit">Apply</button>
</form>
Я хочу, чтобы второй флажок и первый флажок ставились, когда ?a=2amp;a=1
это наблюдается в URL.
Это то, что я пробовал, но код не работает.
<script>
var sPageURL = window.location.search.substring(1);
var sURLVariables = sPageURL.split('amp;');
for (i in sURLVariables) {
let sParameter =sURLVariables[i].split('=');
let name=sParameter[0];
let value=decodeURIComponent(sParameter[1]);
let id=decodeURIComponent(sParameter[1]);
let collection = document.getElementById(id)
for(j in collection){
if(collection[j].id==id)collection[j].checked=true
}
}
</script>
Комментарии:
1. 1.
if
сравнение должно было иметь==
. 2. ИспользуйтеURLSearchParams
. 3.value
иid
должно быть в кавычках2. Фиксированные точки 1 и 3, но для точки 2 вы имеете в виду что-то вроде
URLSearchParams(window.location.search.substring(1))
3. developer.mozilla.org/en-US/docs/Web/API/URLSearchParams . Вам не нужно вручную разделять и проверять
4. в html-коде
id
иvalue
будет в двойных кавычках. и в javascript это сделать такdocument.getElementById(window.location.href.split("?a=")[1]).checked=true
5. Ммм, это работает для одного параметра, но не работает для нескольких
?a=1amp;a=3
, Возможно, мне следовало бы прояснить это.
Ответ №1:
Вы можете следовать такому подходу
let fakeQueryString = "a=2amp;a=3"; //replace it with actual url
let searchParms = new URLSearchParams(fakeQueryString);
for(const [key,val] of searchParms)
document.getElementById(val).checked = true;
<form method='GET'>
<input type="checkbox" name="a" value="1" id="1"/>
<input type="checkbox" name="a" value="2" id="2"/>
<input type="checkbox" name="a" value="3" id="3"/>
<button type="submit">Apply</button>
</form>