javascript修改变量

javascript修改变量,javascript,jquery,html,Javascript,Jquery,Html,我有这个: var category = "3%2C16%2C6%2C10%2C1%2C19"; 在witch类别中,id是3 16 6 10 1 19,%2C是类别之间的空格 我想要的是: if (document.getElementById("3").checked = false) { category = "16%2C6%2C10%2C1%2C19"; } else { category = "3%2C16%2C6%2C10%2C1%2C19"; } 我想为我所有的

我有这个:

var category = "3%2C16%2C6%2C10%2C1%2C19";
在witch类别中,id是
3 16 6 10 1 19
%2C
是类别之间的空格

我想要的是:

if (document.getElementById("3").checked = false) {
    category = "16%2C6%2C10%2C1%2C19";
}
else {
    category = "3%2C16%2C6%2C10%2C1%2C19";
}
我想为我所有的复选框设置此选项,但您不能取消选中所有复选框,因为服务器不会将任何数据发送回您

这是用于过滤结果的

尝试

if (document.getElementById("3").checked === false) {
请注意,额外的double等于执行一个typesafe检查

或者更好

if (!document.getElementById("3").checked) {
但是,当您使用jQuery时,您似乎要从选中状态中提取一个字符串,这对于硬编码字符串来说非常脆弱,因此可能类似于:

var category = "";

$( "input:checked" ).each(function() {
    category = $(this).id + "%2C";
};

只有在需要输出时才调用它,例如按下按钮。

使用jquery时,您可以监听复选框的
更改事件,然后在每次选中或取消选中复选框时构建列表。要存储值,您可以使用复选框的
value
属性或添加
data-
属性

获取一个值数组并对其进行排序将避免后面的
%2C

var类别=”;
(函数($){
//缓存复选框集合
var cboxes=$('input[type=checkbox]');
cboxes.on('change',function()){
//仅查找勾选的框,并将其类别值组成一个数组,然后用空格连接这些值
category=$.makeArray(cboxes.filter(':checked').map(function()){
返回$(this).data('category');
//返回$(this).val();//如果将它们存储在value=“3”中
})).join(“%2C”);
//用于调试目的的输出
$('#categoryOutput').html(““+category+””);
});
})(jQuery)

使用数组,然后在需要时将其转换为此字符串表示形式会更容易

var categories = [];
$('#category-form input').change(function () {
    var id = $(this).attr('data-id'),
        index = categories.indexOf(id);
    if (this.checked && index === -1) {
        categories.push(id);
    } else if (!this.checked && index !== -1) {
        categories.splice(index, 1); 
    }
});
您可以在中看到我的工作代码。
(使用多个复选框、字符串表示和至少一个复选框)

您想做什么?您能再详细解释一下吗?首先:您正在if语句中使用赋值运算符。第二:如果您不想至少选中一个复选框,为什么不尝试使用单选框代替复选框?我正在尝试解析json,并添加一些过滤器,如果您取消选中复选框,id的变量将删除所选id,或者,如果您选中它,它将添加id有6复选框,问题是如果您取消选中5,并且只选中了一个,则var类别应该只包含id而不是%2Ci不能使用单选按钮,因为您可以选择“倍增”复选框。我想这是我不想做的,但我不知道为什么它现在可以工作