输出始终在保存时返回undefined

时间:2015-08-24 08:50:42

标签: javascript jquery html

我很难获得数据。我不知道哪里出错了。

按钮:

<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

等等。

2 个答案:

答案 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)或在“上面”范围内提供数据