我很难获得数据。我不知道哪里出错了。
按钮:
<button class="btn btn-primary" style="font-size: 10px;" onclick="save()">Save</button>
数据来自:
//index is dynamic from another js
var hide = '<label><input type="radio" class="menuOptions" name="save' + index + '" id="access' + index + '" value="0" ' + (access == 0 ? 'checked' : (access == 3 ? 'disabled' : '')) + ' <?php isset($access) ? ($access == 1 ? "disabled" : "") : "disabled" ?>/>Hide</label>';
function save() {
var a = [];
for (var i = 0; i != data.length; i++) {
a.push({
'value': $('input[name="save' + i + '"]:checked').val()
});
}
console.log(a)
}
数据:当我在console.log(a)
时[Object, Object, Object, Object]
0: Object
a: 2
title: 'MyTitle'
__proto__: Object
1: Object
a: 2
title: 'AnotherTitle'
__proto__: Object
等等。
答案 0 :(得分:4)
因为您没有从函数返回任何内容,默认情况下会返回undefined
。
我的主要猜测是data
和选中的复选框根本没有连接。因此,当您使用data.length
循环时,没有选中的复选框,因此您可能会获得undefined
。否则,您[]
的输出为log
。
无论如何,我还更新了save()
。
function save() {
var a = []; // Initialize array
var checkedElements = $('input[name="save"]:checked'); // Get all save checked checkboxes
for (var i = 0; i < checkedElements.length; i++) {
a.push({
value: checkedElements.eq(i).val() // Add value of checked checkboxes in array
});
}
return a; // return array from function
}
答案 1 :(得分:0)
可能因为data
超出了范围。如果您尝试在函数中记录data
,它可能是未定义的,并且循环没有任何内容可以迭代。将数据传递给函数save(data)
或在“上面”范围内提供数据