我已经尝试了下面代码的许多变体,即在 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/