【发布时间】:2018-05-21 19:18:57
【问题描述】:
这会检查用户输入。但是,控制台给了我一个错误,说“未定义大小”,我认为这是因为大小在函数内,而 while 条件在函数外
const newGrid = document.getElementById('new-grid');
newGrid.addEventListener('click', createGrid);
const main = document.querySelector('main');
function createGrid() {
do {
let size = parseInt(prompt("Please enter a number from 1 to 64", ""), 10);
const numPx = (600 / size) - 2;
let px = numPx + 'px';
for (let i = 0; i < size; i++) {
for (let j = 0; j < size; j++) {
const div = document.createElement('div');
div.setAttribute('class', 'grid');
main.appendChild(div);
div.setAttribute('style', `width: ${px}; height: ${px}`);
}
}
} while(isNaN(size) || size > 64 || size < 1);
}
【问题讨论】:
-
不要使用
isNaN,使用容易出错的Number.isNaN。 -
@JaredSmith
size是一个数字,所以没关系 -
看起来从
const numPx到do块末尾的所有内容都应该放在while循环之后?! -
@Bergi,是的,他们应该这样做,我还有另一个问题是网格无法正确打印出来,尽管我现在正在处理这部分。
-
@Bergi 好习惯就是好习惯。我仍然使用
===,即使它并不重要。
标签: javascript function scope do-while