JavaScript 在 while 循环中设置输入值
JavaScript set input value in while loop
代码如下:
v1 = document.getElementById('double').value;
while (v1 < 10) {
v1++;
now = new Date().getTime();
while(new Date().getTime() < now + 1000){}
document.getElementById('inputArea').value = v1;
}
inputArea 是一个有一个数字的文本框,我想将该数字每秒增加 1 秒,直到达到 10。问题是输入区域仅显示最后一个值 10,它应该是....7, 8, 9 10.
您可以使用
setInterval
var timerId = setInterval(function(){
v1 = parseInt(document.getElementById('double').value,10);
if(v1 == 10){
clearInterval(timerId)
}
else{
document.getElementById('double').value = (v1+1)
}
},1000);
<input id="double" value="1" />
首先,您需要在 while 循环中移动值更新:
v1 = document.getElementById('double').value;
while (v1 < 10) {
v1++;
now = new Date().getTime();
while(new Date().getTime() < now + 1000) {
document.getElementById('inputArea').value = v1;
}
}
为了回答您评论中的问题,它似乎在 while 循环中不起作用的原因(除了上述内容)是因为循环不断应用值更新,而不是给浏览器窗口更新的机会。 使用 setInterval 可以避免这种情况。
无论如何,如果你想看到上述工作,你可以暂停 while 循环的执行,比如警报 - 这应该给窗口一个更新的机会。
这是一个小提琴。
你必须
使用setTimeout函数。尝试以一秒为增量递归调用它。
更新:
setInterval 可能会更好,因为这样你就不需要处理递归调用了。尝试类似于下面的代码:
v1 = document.getElementById('double').value;
var intervalId = setInterval(function() {
v1++;
document.getElementById('inputArea').value = v1;
if(v1 === 10) clearInterval(intervalId);
}, 1000);
可以使用setTimeout
非常简单地完成:
setTimeout(function repeat(i){
document.getElementById('inputArea').value = i;
if(i < 10) setTimeout(repeat, 1000, i++);
}, 1000, Number(document.getElementById('double').value));
相关文章:
- 如果值为空,如何设置输入的默认值?jQuery
- 如何设置输入文本框jquery的值
- jQuery - 添加删除类 - 设置输入值
- 可以设置输入类型=文件的文本框的高度
- 在jquery中,从同一对象的属性设置输入字段和标签的正确方法是什么
- 设置输入类型月份的值
- 整数 + 2x 单选按钮设置输入 --> 输出
- jQuery timepicker:如何动态设置输入字段的minTime
- 设置输入类型=日期
- IE 9 jQuery未设置输入值
- React设置输入's值
- 使用jquery设置输入数组值
- 如何使用javascscript设置输入值
- 使用 javascript 设置输入标签的值
- 根据角度中的另一个字段设置输入字段的默认值
- 如何设置输入元素的值
- 如何在哈希中设置输入值
- 我如何在 jQuery 中以编程方式设置输入文本框的值
- Javascript在加载后设置输入值
- 无法使用 Javascript 设置输入的值