По какой-то причине я не могу этого понять.
У меня есть несколько переключателей в моем html, которые переключают категории:
<input type="radio" name="main-categories" id="_1234" value="1234" /> // All
<input type="radio" name="main-categories" id="_2345" value="2345" /> // Certain category
<input type="radio" name="main-categories" id="_3456" value="3456" /> // Certain category
<input type="radio" name="main-categories" id="_4567" value="4567" /> // Certain category
Пользователь может выбрать то, что он / она хочет, но когда срабатывает определенное событие, я хочу установить переключатель 1234
с установленным флажком, потому что это установленный по умолчанию переключатель.
Я пробовал версии этого (с jQuery и без):
document.getElementById('#_1234').checked = true;
Но вроде не обновляется. Мне нужно, чтобы он явно обновлялся, чтобы пользователь мог его видеть. Кто-нибудь может помочь?
РЕДАКТИРОВАТЬ: Я просто устал и упустил из виду #
, спасибо, что указали на это, и $.prop()
.
document.getElementById('_1234').checked = true;
#
Ответы:
Не смешивайте синтаксис CSS / JQuery (
#
для идентификатора) с собственным JS.Собственное решение JS:
document.getElementById("_1234").checked = true;
Решение JQuery:
$("#_1234").prop("checked", true);
источник
querySelector
Я полагаю, jQuery получил это от ..attr("checked", "checked")
querySelector
не поставлялась в браузерах до 2009 года и не использовалась разработчиками широко до некоторого времени после этого. Я никогда так часто не использовал jQuery, но он значительно повлиял на эволюцию JS.Если вы хотите установить кнопку «1234», вам нужно использовать ее «id»:
document.getElementById("_1234").checked = true;
Когда вы используете API браузера ("getElementById"), вы не используете синтаксис селектора; вы просто передаете фактическое значение id, которое ищете. Вы используете синтаксис селектора с jQuery или
.querySelector()
и.querySelectorAll()
.источник
Сегодня, в 2016 году, его можно использовать
document.querySelector
без знания идентификатора (особенно, если у вас более двух переключателей):document.querySelector("input[name=main-categories]:checked").value
источник
Самый простой способ, вероятно, был бы с jQuery, а именно:
$(document).ready(function(){ $("#_1234").attr("checked","checked"); })
Это добавляет новый атрибут "checked" (который в HTML не требует значения). Просто не забудьте включить библиотеку jQuery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
источник
$("#_1234").prop("checked", true)
Используя
document.getElementById()
функцию, вам не нужно проходить#
перед идентификатором элемента.Код:
document.getElementById('_1234').checked = true;
Демо: JSFiddle
источник
Я смог выбрать (проверить) кнопку радио ввода, используя этот код Javascript в Firefox 72 на странице параметров веб-расширения, чтобы ЗАГРУЗИТЬ значение:
var reloadItem = browser.storage.sync.get('reload_mode'); reloadItem.then((response) => { if (response["reload_mode"] == "Periodic") { document.querySelector('input[name=reload_mode][value="Periodic"]').click(); } else if (response["reload_mode"] == "Page Bottom") { document.querySelector('input[name=reload_mode][value="Page Bottom"]').click(); } else { document.querySelector('input[name=reload_mode][value="Both"]').click(); } });
Где связанный код для СОХРАНИТЬ, значение было:
reload_mode: document.querySelector('input[name=reload_mode]:checked').value
Данный HTML выглядит следующим образом:
<input type="radio" id="periodic" name="reload_mode" value="Periodic"> <label for="periodic">Periodic</label><br> <input type="radio" id="bottom" name="reload_mode" value="Page Bottom"> <label for="bottom">Page Bottom</label><br> <input type="radio" id="both" name="reload_mode" value="Both"> <label for="both">Both</label></br></br>
источник