循环复选框和构建JavaScript对象文字

Loop checkboxes and built JavaScript object literal

本文关键字:对象 文字 JavaScript 构建 复选框 循环      更新时间:2023-09-26

嘿,我正试图找出一种方法来添加数据到一个JS对象,当我循环,看看哪些复选框在页面上被选中:

jQuery('#doaction').click(function () {
    var bulkSelected = jQuery('#bulkAction').val();
    var checkCount = 1;
    if (bulkSelected == 0) {
        console.log('no bulk selected category');
        jQuery('#overlay-shade').fadeOut(300);
    } else {
        var doBulk = {
            called: '' + bulkSelected + '',
        };
        jQuery('input[type=checkbox]').each(function () {                           
            if (jQuery(this).attr('id') != 'selectAll') {
                var isChecked = (this.checked ? true : false);
                if (isChecked == true) {
                    console.log(jQuery(this).attr('id'));
                    console.log(jQuery(this).attr('data-accnum'));
                }
                checkCount++;
            }
        });
    }

.attr('data-accnum')包含如下所示的数字。我需要它的格式是:

(复选框名称:accnum)

var doBulk = {
    chk1: 52136523168,
    chk2: 54298851631
    ect..ect...
};

我该怎么做呢?

尝试:

var doBulk = {};
jQuery('input[type=checkbox]').each(function () {                           
    if (jQuery(this).attr('id') != 'selectAll') {
        var isChecked = (this.checked ? true : false);
        if (isChecked == true) {
            doBulk[jQuery(this).attr('id')] = +jQuery(this).attr("data-accnum");
        }
        checkCount++;
    }
});
console.log(doBulk);

jQuery有一个:checked选择器,以及一个not方法,我们使用它只获取所有非#selectAll的checked输入

然后您只需将其添加到doBulk对象使用括号符号,从each函数中访问doBulk对象是可能的,因为javascript有闭包。

    var doBulk = {}
      , checked = jQuery('input[type=checkbox]:checked').not('#selectAll')
      , checkCount = checked.length;
    checked.each(function () {                           
      doBulk[this.id] = jQuery(this).attr('data-accnum');
    });