假设我输入的类型为"复选框"
<input type='checkbox' id='checker'>
我需要能够在没有按钮点击或功能调用的情况下立即检测此框是否被选中。选中并取消选中该框将使文本变亮或变暗。我如何不断检查盒子是否未经检查IN VANILLA JAVASCRIPT?我需要能够做到这一点,最好没有无限的for循环,这会使页面崩溃。我知道它的方法
var value=document.getElementById('checker').checked;
但我需要一种方法来不断检查是否已经使用vanilla javascript重新加载页面。请帮忙!
编辑:我也在考虑使用两个单选按钮,一个值为true,另一个值为false,但我仍然需要一种方法来查看哪一个被检查。
答案 0 :(得分:2)
检查工作演示:http://jsfiddle.net/rrath8tg/1/:
// checkbox is a reference to the element
checkbox.onchange = function() {
if(this.checked) {
// do something when checked
}
};
复选框元素上的onchange
。
答案 1 :(得分:1)
您可以使用CSS,只要您想要更改的文本在DOM中处于同一级别:
HTML:
<input type="checkbox" id="checker">
<span id="sometext">Lorem ipsum...</span>
CSS:
input#checker:checked + span#sometext {
color:#ff0000; /* Red - highlighted */
}
答案 2 :(得分:0)
document.addEventListener('click', function(e) {
if (e.target.nodeName == 'INPUT' && e.target.type == 'checkbox' && e.target.checked) {
alert('Checked!');
}
});
<input type="checkbox" />
e.target.nodeName
返回所点击元素的标记名称e.target.type
返回其类型e.target.checked
返回被点击的元素是否被检查适用于页面上的所有复选框(您也可以查看e.taget.id
是否有正确的复选框。)
在这种情况下,change
事件侦听器更合适,因为您可以在单选按钮上单击而不更改。
document.addEventListener('change', function(e) {
if (e.target.nodeName == 'INPUT' && e.target.type == 'radio' && e.target.checked) {
alert(e.target.id); // returns either `yes` or `no`.
}
});
<label><input id="yes" name="radio0" type="radio" />Yes</label>
<label><input id="no" name="radio0" type="radio" />No</label>
如果您将事件监听器附加到document
而不是特定的input
,则有一些优点:
addEventListener('DOMContentLoaded',function(){})
或类似内容中。无论内容是否已加载,此事件也将触发并始终提供正确的目标无关紧要。nextElementSibling
,previousElementSibling
,{ {1}},parentNode
等