JavaScript 未捕获类型错误 : Cannot read property 'push' of undefined

标签 javascript

它说“未捕获类型错误:无法读取未定义的属性‘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;
}

最佳答案

将validationInfo创建为对象而不是数组

var validationInfo = {step1: [], step2: [] };
validationInfo['step1'].push("haha");
validationInfo['step2'].push("hehe");

console.log(validationInfo)

在你的循环中,我相信你必须做类似的改变,例如:

validationInfo[stepId][i].elementId

假设stepIdstep1step2之一。当您访问 validationInfo[i] 时,您正在访问 validationInfo 中的以下键:0, 1 ,2, etc。这些是您的 step1step2 数组的索引..

关于JavaScript 未捕获类型错误 : Cannot read property 'push' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51531370/

相关文章:

javascript - 根据类名称扩展菜单栏元素,包括子菜单

javascript - 使用 jQuery 生成的按钮不起作用

javascript - Chart.js:在调整窗口大小时遇到​​问题

javascript - 为门户网站创建交互式 SVG map

javascript - 如何删除同位素全过滤器?

javascript - 在Safari/Chrome中,如何在ready()和focus()上触发函数A,在blur()上触发函数B?

javascript - 如何从javascript函数创建一个对象

javascript - 是否可以强制 RequireJS 重新加载文本依赖项?

javascript - 处理全日历中的单击和双击事件

javascript - JS - 一行代码中的多个事件监听器和动态参数