Javascript:从数组创建表

时间:2015-07-22 03:39:01

标签: javascript html arrays html5

我有一个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个数字和未定义

1 个答案:

答案 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>