我有一个HTML表格:
<table>
<tr id="0"></tr>
<tr id="1"></tr>
<tr id="2"></tr>
<tr id="3"></tr>
</table>
然后我创建一个包含16个数字的数组,对数组进行洗牌,然后在Javascript中为每个数字添加一个单元格。
var numbers = shuffle([1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8]);
console.log(numbers)
function shuffle(o) {
for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
function addCell(row, number) {
var cell = document.getElementById(row).insertCell(0)
cell.innerHTML = number;
}
function setNumbers() {
var column = 0;
var row = 0;
for (i = 0; i <= numbers.length; i++) {
column = column + 1;
if (column > 4) {
column = 0;
row = row + 1;
}
console.log(row)
addCell(row, numbers[i]);
}
}
setNumbers()
函数setNumbers()
应该创建一个包含4行和4列的表。
它应该创建这样的东西:
5 7 6 2
1 4 3 4
8 3 2 1
5 6 7 8
然而,它创造了这个:
8 5 1 5
6 2 4 6 4
7 2 8 3 1
undefined 3 7
第1行中的四个数字,
第2行和第3行中的五个数字,
和第4行中的2个数字和未定义
答案 0 :(得分:1)
处理column
的值时存在一个小错误,因为从第二个循环开始检查column > 4
该行将有5个项目
var numbers = shuffle([1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8]);
console.log(numbers.length, numbers)
function shuffle(o) {
for (var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
return o;
}
function addCell(row, number) {
var cell = document.getElementById(row).insertCell(0)
cell.innerHTML = number;
}
function setNumbers() {
var column = 0;
var row = 0;
for (i = 0; i < numbers.length; i++) {
addCell(row, numbers[i]);
if (column == 3) {
column = 0;
row = row + 1;
} else {
column++;
}
}
}
setNumbers()
<table>
<tr id="0"></tr>
<tr id="1"></tr>
<tr id="2"></tr>
<tr id="3"></tr>
</table>