javascript - 用于打印二维数组的嵌套 for 循环。迭代是否未定义?

标签 javascript jquery

我已经尝试了下面代码的许多变体,即在 while 中交换。我有一个动态创建和添加的数组。它创建了一个空的联赛表。当我遍历数组并打印出表格时,第一个循环总是返回未定义?我的控制台记录了所有内容,但无法找出原因。我认为这与内部循环变量有关,但我的想法已经用完了。有人可以解释为什么所有循环都会发生这种情况吗?我在这里阅读了一些问题,有些人谈到变量在第一个循环中被视为字符串,但我不明白。

league = [];

$('#butt').on('click',function(){
    var name = $('.input1').val();
    x = $('#demo');
    x.html(name);
    person(name,0,0,0,0,0);
});

function person(first,w,d,l,gf,ag) {
    this.Name = first;
    this.wins = w;
    this.draws = d;
    this.lose = l;
    this.goalsfor = gf;
    this.goalsag =ag;
    newTeam = new Array    

    (this.Name,this.wins,this.draws,this.lose,this.goalsfor,this.goalsag);


    league.push(newTeam);
    teamRow = league[0][0];
    makeLeague();
}

function makeLeague(){

    var tableStart = "<table>"
    var tableEnd = "</table>"
    var tableMid ;
    var secondtab = $('#demo1');

    leagueSize = league.length;

    console.log("league length is   " + league.length);

    for(k=0; k<league.length; k++){
        tableMid += "<tr>";
        for(i=0; i< 6; i++){
            tableMid += "<td> " + league[k][i] + "</td>";
        }
        tableMid += "</tr>";
    }

    secondtab.html(tableStart + tableMid + tableEnd);
}

最佳答案

person 应该用作构造函数时,您将其用作普通函数。尝试使用 new person(name, 0, 0, 0, 0, 0); 代替(并可能将其存储到变量中)。

另外,作为John Sheridan mentions ,您还需要初始化 tableMid 变量,然后才能附加到它,如下所示:var tableMid = "";

这是代码的清理版本。请注意您应该包含的 var 声明以避免范围问题。

var league = [];

$('#butt').on('click', function() {
    var name = $('.input1').val();
    var x = $('#demo');
    x.html(name);
    var person = new Person(name, 0, 0, 0, 0, 0);
});

function Person(first, w, d, l, gf, ag) {
    this.Name = first;
    this.wins = w;
    this.draws = d;
    this.lose = l;
    this.goalsfor = gf;
    this.goalsag = ag;
    var newTeam = [this.Name, this.wins, this.draws, this.lose, this.goalsfor, this.goalsag];

    league.push(newTeam);
    var teamRow = league[0][0];
    makeLeague();
}

function makeLeague() {
    var tableStart = "<table>";
    var tableEnd = "</table>";
    var tableMid = "";
    var secondtab = $('#demo1');

    for (var k = 0; k < league.length; k++) {
        var team = league[k];
        tableMid += "<tr>";
        for (var i = 0; i < team.length; i++) {
            tableMid += "<td> " + team[i] + "</td>";
        }
        tableMid += "</tr>";
    }

    secondtab.html(tableStart + tableMid + tableEnd);
}

关于javascript - 用于打印二维数组的嵌套 for 循环。迭代是否未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31215276/

相关文章:

javascript - 如何将整个 angularjs 应用程序嵌入到单独部署的现有应用程序中

javascript - 与自己编写 JavaScript 相比,jQuery 有哪些优势?

javascript - 如何从 iframe 访问父窗口中的 CKEditor 实例?

Jquery - 生涩的动画

jquery - 显示工具提示而不是编写多个 jquery 函数的替代方法

Javascript/jQuery 表单验证

javascript - 使用 css 和 javascript 在 div 背景中创建一个透明窗口

javascript - 将超集数组叠加到顺序/顺序很重要的子集数组上(在 Javascript 中)

jquery - 部分 View 数据更新时如何更新父数据?

javascript - 使用变量名 fadeIn 和 Prepend