TypeError:无法设置undefined的属性“0”

时间:2012-02-02 17:02:29

标签: javascript jquery

var fields = ['firstName', 'lastName', 'address', 'postCode', 'email', 'phone', 'dob'];
    for (var i=0; i<fields.length; i++) {
            if (!$('#'+fields[i]).val()) {
                alert('The ' + getFieldTitle(fields[i]) + ' field is required.');


                return false;
            }
            values.fields[i] = $('#'+fields[i]).val();
            console.log($('#'+fields[i]).val() , values , fields[i]);
        }

值在脚本开头定义为全局变量。似乎在为数组位置分配正确名称的第一次迭代中,我得到了失败。我记录它们看起来正确显示的字段名称但是它们没有正确分配给数组值?

编辑:首先忽略字段初始化,抱歉

3 个答案:

答案 0 :(得分:2)

如果您想要一个包含id和值的对象:

// set values equal to an empty object
var values={};
var fields = ['firstName', 'lastName', 'address', 'postCode', 'email', 'phone', 'dob'];
for (var i=0; i<fields.length; i++) {
        if (!$('#'+fields[i]).val()) {
            alert('The ' + getFieldTitle(fields[i]) + ' field is required.');
            return false;
        }
// Here's the only line you need to change
        values[fields[i]] = $('#'+fields[i]).val();
        console.log($('#'+fields[i]).val() , values , fields[i]);
    }

答案 1 :(得分:1)

(values.fields || (values.fields = []))[i] = $('#'+fields[i]).val();

答案 2 :(得分:0)

试试这个:

var values = {},
    i = 0,
    l = fields.length;
for (i; i < l; i++) {
    var itemId = fields[i],
        item = document.getElementById(itemId),
        itemValue = item.value;    
    if (!itemValue) {
        alert('The ' + getFieldTitle(item) + ' field is required.');
        return false;
    }
    values[itemId] = itemValue;
}

这里不需要使用jQuery。只需使用JavaScript,您的解决方案就会更快