我正在尝试创建一个简单的内存匹配游戏,并且我无法从cardValues数组中分配一个数字给每个表格单元格。我的giveCellValue函数应该会生成一个随机数,然后从数组中选择这个数字并将其提供给其中一个表格单元格,但是我对这个问题略显不满,并且无法完成此任务。将数组中的元素随机存储到表中
var countCells;
var cardValues = [];
var checker = true;
var createTable = function (col, row) {
$('table').empty();
for (i = 1; i <= col; i++) {
$('table').append($('<tr>'));
}
for (j = 1; j <= row; j++) {
$('tr').append($('<td>'));
}
countCells = row * col;
};
createTable(3, 6);
for (i = 1; i <= countCells/2; i++) {
cardValues.push(i);
if (i === countCells/2 && checker) {
checker = false;
i = 0;
}
}
var giveCellValue = function() {
var random = Math.ceil(Math.random() * cardValues.length) - 1;
for (i = 0; i <= cardValues.length; i++) {
$('td').append(cardValues[random]);
cardValues.splice(random, 1);
}
};
giveCellValue();
console.log(cardValues);
小心,'i'和'j'是全球性的麻烦! – elclanrs
@elclanrs我想如果你只是在他们是本地功能内定义他们? – user2449973
是的,但它们没有定义,你缺少'var'关键字,所以它们变成了隐式的全局变量。由于这个问题,我看到了意外的错误,因为所有的循环共享相同的变量。 – elclanrs