Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行循环javascript时页面无响应_Javascript_Html - Fatal编程技术网

运行循环javascript时页面无响应

运行循环javascript时页面无响应,javascript,html,Javascript,Html,我正在用JavaScript制作一个时钟,其中一部分当然是while循环,以不断更新时间。我搜索了这个错误,它说运行while循环会使JavaScript无响应。我不知道如何替换while循环,也不知道为什么我不能把它放在那里。非常感谢您的帮助。下面是错误和代码 var today=新日期(); var小时数; var分钟; var秒; 风险值百分比; var时间; var clock=document.getElementById(“时钟头”); while(true){ 小时=今天。ge

我正在用JavaScript制作一个时钟,其中一部分当然是while循环,以不断更新时间。我搜索了这个错误,它说运行while循环会使JavaScript无响应。我不知道如何替换while循环,也不知道为什么我不能把它放在那里。非常感谢您的帮助。下面是错误和代码


var today=新日期();
var小时数;
var分钟;
var秒;
风险值百分比;
var时间;
var clock=document.getElementById(“时钟头”);
while(true){
小时=今天。getHours();
小时=小时*3600;
分钟=今天。getMinutes();
分钟=分钟*60;
秒=今天。getSeconds();
秒=秒+分+小时;
百分比=秒/48600;
百分比=字符串(百分比);
百分比=百分比+“%”;
时间=document.createTextNode(百分比);
时钟。子(时间);
}
正文{
字体系列:“雷威”;
}
#发条{
位置:固定;
最高:50%;
宽度:100%;
文本对齐:居中;
字体大小:200px;
}

百分比时钟
while(true)
将持续运行,阻塞主线程。如果需要它连续运行一个时钟,最好使用
setInterval
或递归
setTimeout

setInterval(() => {
  // Your code
}, 1000)
或:

看看他们之间的区别


示例:

var clock=document.getElementById(“时钟头”);
设置间隔(()=>{
var today=新日期();
var hours=today.getHours()*3600;
var minutes=today.getMinutes()*60;
var seconds=today.getSeconds()+分钟+小时;
变量百分比=字符串(秒/48600)+'%';
clock.innerHTML=百分比;
},1000)
正文{
字体系列:“雷威”;
}
#发条{
位置:固定;
最高:50%;
宽度:100%;
文本对齐:居中;
字体大小:20px;
}

while(true)
将持续运行,阻塞主线程。如果需要它连续运行一个时钟,最好使用
setInterval
或递归
setTimeout

setInterval(() => {
  // Your code
}, 1000)
或:

看看他们之间的区别


示例:

var clock=document.getElementById(“时钟头”);
设置间隔(()=>{
var today=新日期();
var hours=today.getHours()*3600;
var minutes=today.getMinutes()*60;
var seconds=today.getSeconds()+分钟+小时;
变量百分比=字符串(秒/48600)+'%';
clock.innerHTML=百分比;
},1000)
正文{
字体系列:“雷威”;
}
#发条{
位置:固定;
最高:50%;
宽度:100%;
文本对齐:居中;
字体大小:20px;
}


浏览器变得无响应,因为JS在单个线程上运行,而运行无限循环将阻塞该线程。如本文所述,您可以使用例如
setInterval()
Browser变得无响应,因为JS在单个线程上运行,而运行无限循环将阻塞该线程。如本文所述,您可以使用例如
setInterval()