是否有一个Javascript函数来使代码运行时代码延迟?

时间:2016-04-15 19:29:19

标签: javascript

好的,我得到了这个<button onclick="alert('1');setInterval(function(){},57000);alert('2');"> Show </button>

延迟没有奏效。

setTimeout也无效。

如何解决?

2 个答案:

答案 0 :(得分:4)

将警报置于setInterval回调:

<button onclick="alert('1');setInterval(function(){alert('2');},57000);"> Show </button>

代码的简单扩展版本:

&#13;
&#13;
var div = document.querySelector('div');

function myFunction(){
  div.textContent += '-'; 
  // beware, this code might crash your browser if left running
  // for a few (thousand) years!!!
}
&#13;
<button onclick="setInterval(myFunction, 1000);"> Start Interval </button>
<div></div>
&#13;
&#13;
&#13;

上面代码的正确样式版本:

&#13;
&#13;
var div = document.getElementById('d');
var button = document.getElementById('b');

button.addEventListener('click', clickHandler);

function myFunction(){
  div.textContent += '-'; 
  // beware, this code might crash your browser if left running
  // for a few (thousand) years!!!
}

function clickHandler(){
  setInterval(myFunction, 1000);
}
&#13;
<button id="b"> Start Interval </button>
<div id="d"></div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

JavaScript代码同步运行 ,这意味着每条指令都是一个接一个地执行。我们来看看您的代码:

alert('1');

setInterval(function(){
    //does nothing
}, 57000);

alert('2');

现在每一行将一个接一个地执行,这意味着alert(1)将执行,然后setInterval(...)然后alert(2)。您的setInterval没有停止执行其他行。

如果您希望延迟执行代码,则必须考虑让代码在 setInterval之后执行(我假设您要使用{{1}这里)完成。

此外,作为专业版,您应该将JavaScript代码与HTML分开。让我们考虑以下几点:

setTimeout