出于某种原因,我似乎无法弄清楚这一点。
我的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()
。
答案 0 :(得分:117)
不要将CSS / JQuery语法(#
用于标识符)与本机JS混合使用。
原生JS解决方案:
document.getElementById("_1234").checked = true;
JQuery解决方案:
$("#_1234").prop("checked", true);
答案 1 :(得分:13)
如果要设置“1234”按钮,则需要使用其“id”:
document.getElementById("_1234").checked = true;
当您使用浏览器API(“getElementById”)时,不使用选择器语法;你只需传递你正在寻找的实际“id”值。您可以将选择器语法与jQuery或.querySelector()
和.querySelectorAll()
一起使用。
答案 2 :(得分:6)
最简单的方法可能是使用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>
答案 3 :(得分:5)
今天,在2016年,保存使用document.querySelector
而不知道ID(特别是如果您有超过2个单选按钮):
document.querySelector("input[name=main-categories]:checked").value
答案 4 :(得分:3)
通过使用Firefox 72中的Javascript代码,我可以在Web扩展选项页面中选择(选中)单选按钮,以加载值:
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>
答案 5 :(得分:1)
使用document.getElementById()
函数,您不必在元素的id之前传递#
。
代码:
document.getElementById('_1234').checked = true;
演示: JSFiddle