如何在函数中使用时间间隔?
how to use time intervals in the function?
我希望字母 'q' 每秒只写入一次。
但它每秒翻一番。
如何使用此命令执行此操作?
function writeNow() {
document.write('q');
setInterval(writeNow, 1000);
}
writeNow();
你想在函数外设置区间,在函数内调用时会递归
尝试
function writeNow() {
document.write('q');
}
setInterval(writeNow, 1000);
writeNow();
我强烈反对 document.write
,因为它已被弃用
您可以使用 setTimeout
function writeNow() {
document.write('q');
setTimeout(writeNow, 1000);
}
writeNow();
或设置间隔
function writeNow() {
document.write('q');
}
setInterval(() => {
writeNow()
}, 1000);
But it doubles every second
因为你在方法里面调用了setInterval
。所以它看起来像 recursion
解法:
您应该将 setInterval(writeNow, 1000);
移到调用的函数之外 - writeNow
。
setInterval(function
, milliseconds
, [param1, param2, ...]
)
function writeNow() {
document.write('q');
}
setInterval(writeNow, 1000);
下面的代码可以完成这项工作。可能可以微调一下以提高性能:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
#letters
{
padding: 10px;
margin: 10px;
}
</style>
</head>
<body>
<div id="letters">
</div>
</body>
<script type="text/javascript">
let alphabets = [];
let running = false;
let output = "";
function prepare()
{
for(i=65; i<92; i++)
{
console.log(String.fromCharCode(i));
alphabets.push(String.fromCharCode(i));
}
}
let lastPrinted = 0;
function printAlphabet()
{
if(lastPrinted == 0)
{
running = true;
}
else if(lastPrinted == 26)
{
running = false;
}
if(running)
{
output += (alphabets[lastPrinted]) + ","
document.getElementById('letters').innerHTML = output;
lastPrinted ++;
setTimeout(printAlphabet, 1000);
}
else
{
output = output.substring(0,output.length - 1)+".";
document.getElementById('letters').innerHTML = output;
}
}
prepare();
printAlphabet();
</script>
</html>
输出:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
试试这个
<script>
function writeNow() {
document.write('this');
}
setInterval(writeNow, 1000);
</script>
您正在递归调用函数
我希望字母 'q' 每秒只写入一次。 但它每秒翻一番。 如何使用此命令执行此操作?
function writeNow() {
document.write('q');
setInterval(writeNow, 1000);
}
writeNow();
你想在函数外设置区间,在函数内调用时会递归
尝试
function writeNow() {
document.write('q');
}
setInterval(writeNow, 1000);
writeNow();
我强烈反对 document.write
,因为它已被弃用
您可以使用 setTimeout
function writeNow() {
document.write('q');
setTimeout(writeNow, 1000);
}
writeNow();
或设置间隔
function writeNow() {
document.write('q');
}
setInterval(() => {
writeNow()
}, 1000);
But it doubles every second
因为你在方法里面调用了setInterval
。所以它看起来像 recursion
解法:
您应该将 setInterval(writeNow, 1000);
移到调用的函数之外 - writeNow
。
setInterval(
function
,milliseconds
,[param1, param2, ...]
)
function writeNow() {
document.write('q');
}
setInterval(writeNow, 1000);
下面的代码可以完成这项工作。可能可以微调一下以提高性能:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
<style media="screen">
#letters
{
padding: 10px;
margin: 10px;
}
</style>
</head>
<body>
<div id="letters">
</div>
</body>
<script type="text/javascript">
let alphabets = [];
let running = false;
let output = "";
function prepare()
{
for(i=65; i<92; i++)
{
console.log(String.fromCharCode(i));
alphabets.push(String.fromCharCode(i));
}
}
let lastPrinted = 0;
function printAlphabet()
{
if(lastPrinted == 0)
{
running = true;
}
else if(lastPrinted == 26)
{
running = false;
}
if(running)
{
output += (alphabets[lastPrinted]) + ","
document.getElementById('letters').innerHTML = output;
lastPrinted ++;
setTimeout(printAlphabet, 1000);
}
else
{
output = output.substring(0,output.length - 1)+".";
document.getElementById('letters').innerHTML = output;
}
}
prepare();
printAlphabet();
</script>
</html>
输出:
A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
试试这个
<script>
function writeNow() {
document.write('this');
}
setInterval(writeNow, 1000);
</script>
您正在递归调用函数