Javascript 复选框导致无限循环
因此,我正在使用html en Javascript制作一个程序,用户可以单击一个按钮,程序将执行一个计算,选中复选框时,将在循环中执行相同的计算Javascript 复选框导致无限循环,javascript,html,loops,checkbox,Javascript,Html,Loops,Checkbox,因此,我正在使用html en Javascript制作一个程序,用户可以单击一个按钮,程序将执行一个计算,选中复选框时,将在循环中执行相同的计算 <body> <button onclick="javascript:calc();"> Calculate</button> <form action=""> <input id="checkbox" type='checkbox' name='auto' value='Aut
<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>
算计
var checkbox=document.getElementById('checkbox');
函数计算(){
做{
//算计
}while(checkbox.checked);
}
问题是,当我选中复选框时,网页只是冻结,因为它被卡在一个无限循环中,所以我无法取消选中复选框来停止它
有没有办法阻止它进入无限循环?有一种方法:不写无限循环?当复选框被选中时,您正在反复执行
//calculate stuff
部分(除非您在其中有一个break
),并且由于它在ui线程上运行,ui被冻结 选中复选框的那一刻,就是将代码放入无限循环中。这将冻结页面,不允许用户取消选中该框。您可以使用setTimeout尝试类似的方法
function calc(){
if(conditionIsTrue){ // do smth here}
else{
//do another stuff here
}
}
const foo = () => {
if (checkbox.checked) {
//do math
setTimeout( () => {
foo();
}, 3000)
}
}
将函数设置为在单击复选框时启动,如果选中,则可以进行计算,3秒钟后它将再次递归调用自己,并检查复选框是否仍处于选中状态。是的,有一种方法,它被调用。