Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 单击复选框时设置布尔变量_Javascript_Jquery_Checkbox - Fatal编程技术网

Javascript 单击复选框时设置布尔变量

Javascript 单击复选框时设置布尔变量,javascript,jquery,checkbox,Javascript,Jquery,Checkbox,我得到了一些类似于引导复选框的HTML。默认情况下,复选框处于启用状态 <div id="full" class="checkbox"> <label> <input type="checkbox" checked=""> Include Full Classes </label> </div> 我想要实现的是,选中复选框时,它会将full设置为1,如果未选中,则

我得到了一些类似于引导复选框的HTML。默认情况下,复选框处于启用状态

    <div id="full" class="checkbox">
        <label>
            <input type="checkbox" checked=""> Include Full Classes
        </label>
    </div>
我想要实现的是,选中复选框时,它会将
full
设置为1,如果未选中,则将
full
设置为0

我对
full
变量执行了
console.log()
,在我的输出中,得到的只是
false

我想知道我做错了什么


这是我正在引用的此
的输出。选中的
布尔值
应该可以实现这一点

var full;
$('#full').change(function(){
   full = this.checked  ? 1 : 0 ; 
   //or using jquery 
   // full = $(this).is(':checked') ? 1 : 0;
   console.log(full);
});

您需要为复选框指定自己的ID,以便确定是否选中了它。现在您正在测试div是否被选中(这是不可能的)-您要做的是检查
输入
元素是否被选中

工作现场演示:

var-full;
$('#复选框')。更改(函数(){
full=此项已检查;
控制台日志(完整);
});

包括全班
$(“#满”)
不是复选框,而是
div
。您希望查看div中的复选框

var-full;
var cb=$(“#完整输入[type=checkbox]”);
cb.变更(功能(){
如果(cb.prop(“选中”)){
完整=正确;
控制台日志(完整);
}否则{
满=假;
控制台日志(完整);
}
});

包括全班

在我看来,使用
if
语句似乎有些过分。正如@joyBlanks正确指出的那样,如果你要寻找的是真的还是假的,那么
这就是你所需要的。但是如果你想要1或0,那么使用三元运算符

$(':checkbox')。在('change',function()上{
console.log(this.checked);//正确或错误
console.log(this.checked?1:0);//1或0
})
//页面加载时触发更改事件——页面加载时选中复选框
.change()

包括全班
首先将所有未选中项设置为false


如果我要这样做,老实说,我不会使用JQuery。简单点就行了

document.getElementById("checkboxId").checked;

如果不需要使用JQuery,只需使用此变量。

您应该尝试使用
$(this).is(':checked')
而不是
此变量。checked
@Sushil仍然显示为false。如果HTML
被选中了,我会的。让我快速创建一个jsfiddle。我没有注意到
full
是你的div id。@maximillan的答案是正确的
div
怎么会有
更改
事件?@tymeJV老实说,我真的不知道。我对OP的例子做了最小程度的修改,直到我得到了答案,现在为了清晰/最佳实践,我正在回顾它。不过,我只是编辑了它来做一个复选框更改事件,谢谢你提出这个问题。是的,我觉得它工作起来很奇怪。。。想知道复选框更改事件是否会出现在div中?@tymeJV看起来确实出现了。此处的更多信息:很高兴知道-您也可以在
更改
处理程序中使用
this.checked
,而不是重新创建相同的选择器:D。或者真正缩短它:
$('#checkbox').change(function(){full=this.checked;console.log(full);)
 var $checked = $(':checkbox');
    $checked.not(':checked').attr('value', 'false');
    $checked.change(function(){
        $clicked = $(this); 
        $clicked.attr('value', $clicked.is( ":checked" ));
    });
document.getElementById("checkboxId").checked;