簡體   English   中英

TypeError:無法設置未定義的屬性“ 0”

[英]TypeError: Cannot set property '0' of undefined

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]);
        }

在腳本開頭,將值定義為全局變量。 似乎在將適當的名稱分配給數組位置的第一次迭代中,我遇到了失敗。 我記錄的字段名稱似乎正確顯示了什么,但未正確分配給數組值?

編輯:起初省略了字段初始化,對此感到抱歉

如果要包含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]);
    }
(values.fields || (values.fields = []))[i] = $('#'+fields[i]).val();

嘗試這個:

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,您的解決方案就會更快

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM