Javascript 循环通过选定的复选框

Javascript 循环通过选定的复选框,javascript,jquery,Javascript,Jquery,在属于同一类的复选框中,我使用这个函数(未完成)循环并设置一个字符串 function estados() { var query = "trucades.estat in("; var checks = $('.estate_check:checked'); if (checks.length === 0) { query = "not selected "; } else { //set the message here .

在属于同一类的复选框中,我使用这个函数(未完成)循环并设置一个字符串

function estados() {
    var query = "trucades.estat in(";
    var checks = $('.estate_check:checked');

    if (checks.length === 0) {
        query = "not selected ";
    } else {
        //set the message  here ...but only loops once
    }

    return query;
}

但是checks只包含一个包含所选复选框的对象,但是如果我尝试llop,它只会循环一次,因为它只包含这个对象

假设您需要创建查询,您可以与
.get()
一起使用来创建所选值的数组。然后可以用来创建逗号分隔的字符串

function estados() {
    var query = "trucades.estat in(";
    var checks = $('.estate_check:checked');

    if (checks.length === 0) {
        query = "not selected ";
    } else {

        //Create an array of selected value
        var selectedValue = checks.map(function () {
                return $(this).val();
            }).get();

        query += selectedValue.join(',') + ')'
    }

    return query;
}
这把小提琴可以帮你弄明白:


代码中没有循环。
checks=$('.estate\u check:checked')
将检查class
estate\u check
的所有复选框的长度。所以它只会工作一次。而且你的codeloop中没有任何循环,设置一个字符串设置一个字符串为什么?你如何循环?你会这样用“每个”循环吗?我想我们有相同的代码,但我使用的是jQuery1.12,它不适合我
var ckbox = $('.my-checkbox:checked');

var str = "";
ckbox.each(function(){
    str += $(this).attr('data-text') + ", ";
});
alert(str);
function estados() {
var query = "trucades.estat in(";
    $('.estate_check:checked').each(function( index ) {
        const val = $( this ).val()
        console.log(index + ': ' + val);
        query += val;
    });
    query += ')';
    return query;
}