我正在尝试递增一个数字,直到它达到一个值(比如说100),然后让它递减直到达到0,然后让所有这些都在while循环中运行。
代码似乎是正确的,但是浏览器是冻结的,所以如果算法存在缺陷,我无法检查控制台。
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function(){
while(1) {
while(x + step <= ceiling) {
x += step;
document.write(x + ' ');
}
while(x - step >= floor) {
x -= step;
document.write(x + ' ');
}
}
}, 1500);
我在这里使用setInterval来减慢执行速度并避免浏览器出现缓冲问题。它应该不是问题,因为我有16GB的RAM,但它可能取决于浏览器在一个标签中如何使用/访问它。
我也尝试将setInterval函数包装在另一个函数中并执行它,结果相同。
答案 0 :(得分:3)
你有一个while(1)循环,基本上是一个无限循环,即使没有执行代码,它也会冻结浏览器。
答案 1 :(得分:1)
document.write仅用于文档的第一次呈现。由于您正在进行间隔,因此已经呈现了文档,并且您无法使用document.write。相反,您需要将文本附加到正文或div
答案 2 :(得分:0)
其他答案已经指出了无限循环和使用document.write的问题。
我认为这可以满足您的需求:
var ceiling = 100;
var floor = 1;
var x = 1;
var step = 1;
setInterval(function() {
console.log(x);
x += step;
if (x === ceiling || x === floor) {
step = -step;
}
}, 1500);
setInterval本质上是你的while(1)循环。