Z jakiegoś powodu nie mogę tego rozgryźć.
Mam kilka przycisków opcji w moim html, które przełączają kategorie:
<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
Użytkownik może wybrać, co chce, ale gdy wyzwala określone zdarzenie, chcę ustawić 1234
przycisk opcji jako zaznaczony, ponieważ jest to domyślnie zaznaczony przycisk opcji.
Wypróbowałem wersje tego (z jQuery i bez):
document.getElementById('#_1234').checked = true;
Ale wydaje się, że nie aktualizuje się. Potrzebuję widocznej aktualizacji, aby użytkownik mógł to zobaczyć. Czy ktoś może pomóc?
EDYCJA: Jestem po prostu zmęczony i przeoczyłem #
, dziękuję za wskazanie tego, i $.prop()
.
document.getElementById('_1234').checked = true;
#
Odpowiedzi:
Nie mieszaj składni CSS / JQuery (
#
dla identyfikatora) z natywnym JS.Natywne rozwiązanie JS:
document.getElementById("_1234").checked = true;
Rozwiązanie JQuery:
$("#_1234").prop("checked", true);
źródło
querySelector
Wyobrażam sobie, że jQuery to wziął ..attr("checked", "checked")
querySelector
nie był dostarczany w przeglądarkach do 2009 roku i dopiero jakiś czas później nie był powszechnie używany przez programistów. Nigdy nie używałem tak często jQuery, ale znacząco wpłynęło to na ewolucję JS.Jeśli chcesz ustawić przycisk „1234”, musisz użyć jego „id”:
document.getElementById("_1234").checked = true;
Kiedy używasz interfejsu API przeglądarki („getElementById”), nie używasz składni selektora; po prostu przekazujesz rzeczywistą wartość „id”, której szukasz. Używasz składni selektora z jQuery lub
.querySelector()
i.querySelectorAll()
.źródło
Dziś, w roku 2016, można go używać
document.querySelector
bez znajomości identyfikatora (zwłaszcza jeśli masz więcej niż 2 przyciski opcji):document.querySelector("input[name=main-categories]:checked").value
źródło
Najłatwiejszym sposobem byłoby prawdopodobnie użycie jQuery w następujący sposób:
$(document).ready(function(){ $("#_1234").attr("checked","checked"); })
To dodaje nowy atrybut „zaznaczone” (który w HTML nie potrzebuje wartości). Pamiętaj tylko o dołączeniu biblioteki jQuery:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
źródło
$("#_1234").prop("checked", true)
Używając
document.getElementById()
funkcji nie musisz podawać#
przed id elementu.Kod:
document.getElementById('_1234').checked = true;
Demo: JSFiddle
źródło
Udało mi się wybrać (sprawdzić) przycisk wprowadzania opcji za pomocą tego kodu JavaScript w przeglądarce Firefox 72, na stronie opcji rozszerzenia sieci Web, aby załadować wartość:
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(); } });
Gdzie powiązany kod do ZAPISANIA wartość to:
reload_mode: document.querySelector('input[name=reload_mode]:checked').value
Biorąc pod uwagę HTML, jak poniżej:
<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>
źródło