显示“未捕获的TypeError:无法读取未定义的属性” push”” 我觉得我没有以正确的方式初始化数组,请帮忙。
var validationInfo = new Array();
var currentStep = 1;
validationInfo["step1"].push({ elementId: "txtsearchBar", validateFunc: isEmpty });
validationInfo["step2"].push({ elementId: "txtdetails", validateFunc: isEmpty });
function isEmpty(element) {
//alert(element);
return $(element).val() == undefined || $(element).val() == "";
}
function isCurrentSubmissionValid(stepId) {
var isOK = true;
alert(validationInfo);
for (var i = 0; i < validationInfo[stepId].length; i++) {
var element = $("#" + validationInfo[i].elementId);
var validationFunction = validationInfo[i].validateFunc;
if (!validationFunction(element)) {
element.addClass("has-error").removeClass("has-success");
isOK = false;
} else
{
element.addClass("has-success").removeClass("has-error");
}
}
return isOK;
}
答案 0 :(得分:1)
将validationInfo创建为对象而不是数组
var validationInfo = {step1: [], step2: [] };
validationInfo['step1'].push("haha");
validationInfo['step2'].push("hehe");
console.log(validationInfo)
在您的循环中,我相信您必须进行类似的更改,例如:
validationInfo[stepId][i].elementId
假设stepId
是step1
或step2
之一。如果您访问validationInfo[i]
,则正在访问0, 1 ,2, etc
中的validationInfo
之类的键。这些是您的step1
或step2
数组的索引。
答案 1 :(得分:0)
由于在javascript中使用push方法时无法传递密钥,因此可以尝试一下。
\\
答案 2 :(得分:0)
你应该把define _this = this;
写在head里,然后把this
的所有_this
全部替换