所以我正在使用html和Javascript创建一个程序,用户可以点击一个按钮,程序将执行一个计算和一个复选框,当被检查时将在循环中执行相同的计算。
<body>
<button onclick="javascript:calc();"> Calculate</button>
<form action="">
<input id="checkbox" type='checkbox' name='auto' value='Auto' />
</form>
<script>
var checkbox = document.getElementById('checkbox');
function calc() {
do{
//Calculate stuff
}while(checkbox.checked);
}
</script>
</body>
问题是,当我选中复选框时,网页会冻结,因为它卡在无限循环中,所以我无法取消选中该复选框以停止它。
有没有办法阻止它进入无限循环?
答案 0 :(得分:0)
function calc(){
if(conditionIsTrue){ // do smth here}
else{
//do another stuff here
}
}
答案 1 :(得分:0)
有一种方法:不写无限循环?您正在检查复选框时反复执行// calculate stuff
部分(除非您有break
),并且由于它在ui线程上运行,因此ui被冻结。
答案 2 :(得分:0)
当您选中复选框时,您将把代码置于无限循环中。这将冻结页面,不允许用户取消选中该框。您可以尝试使用setTimeout之类的东西。
const foo = () => {
if (checkbox.checked) {
//do math
setTimeout( () => {
foo();
}, 3000)
}
}
单击复选框时将功能设置为触发,如果选中,则可以进行计算,并在3秒后递归调用自身并检查复选框是否仍然处于检查状态。