Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.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 如何允许每5秒执行一次功能?_Javascript_Html_Javascript Events - Fatal编程技术网

Javascript 如何允许每5秒执行一次功能?

Javascript 如何允许每5秒执行一次功能?,javascript,html,javascript-events,Javascript,Html,Javascript Events,朋友们。我有一段代码,我想让amurFunc()每5秒执行一次。 执行是一个侦听器,如果用户单击div,它将侦听。实际上,他可以每5秒单击一次。你能帮我找出哪里做错了吗。 守则: <div id=amur> </div> <script> document.getElementById("amur").addEventListener('click', amurFunc()); function amurFunc() {

朋友们。我有一段代码,我想让
amurFunc()
每5秒执行一次。 执行是一个侦听器,如果用户单击div,它将侦听。实际上,他可以每5秒单击一次。你能帮我找出哪里做错了吗。 守则:

<div id=amur>

</div>

<script>
    document.getElementById("amur").addEventListener('click', amurFunc());
    function amurFunc() {
            var funcTimer = 0;
            while (funcTimer == 0) {
                window.open('http://google.com','_blank');
                funcTimer = 5;
                while (funcTimer > 0) {
                    setInterval(
                        function () {
                            funcTimer--;
                        }, 1000;
                    );
                }
            }
    }
</script>

document.getElementById(“amur”).addEventListener('click',amurFunc());
函数amurFunc(){
var funcTimer=0;
而(funcTimer==0){
打开窗户http://google.com","空白",;
funcTimer=5;
而(计时器>0){
设定间隔(
函数(){
功能计时器--;
}, 1000;
);
}
}
}

这将每5秒启动一次
amurFunc()

setInterval(function() {
    amurFunc();
} ,5000)
但是你想每5秒做什么

是否要每5秒打开一页

为什么要单击启动它

要在5秒后打开页面,请尝试以下操作

setTimeout(function() {
    window.open('http://google.com', '_blank');
}, 5000);
更新 这是按钮

<input type="button" id="btn" value="">
试试这个

<div id="amur" style="background-color:red">
 <p>Test</p>
</div>

最简单的解决方案是使用每5秒重置一次的标志。见下文:

//initially allowed to be clicked
var flag = true;

document.getElementById('amur').onclick = function(){
  if (flag) {
    window.open('http://google.com','_blank');
    //disable click
    flag = false;
    //after 5 secs, click will be enabled again
    setTimeout(function(){
      flag=true;
    },5000);
  }
}

为什么要在一个while循环内启动multiple
setInterval()
?@jfriend00每秒递减funcTimer,直到达到0;您只想开始一次间隔。然后它将每秒自动运行。当你的计数为零时,你调用
clearInterval()
。但是我想当
funcTimer
达到零时,外部循环重新开始。这很好,但每5秒打开一次google。当用户点击div时,我希望谷歌被打开,但如果他再次点击,他将无法在接下来的5秒钟内打开谷歌。这是我正在研究的一个算法。这里使用谷歌,因为它是我想到的第一个页面。这无关紧要。@BillHicks所以使用
setTimeout
在5秒后开始-我的答案已更新。你显然不明白。。。我打开.html文件,我点击div,谷歌打开,如果我再次点击它将不会打开,但如果我在5秒钟后再次点击它将打开,依此类推。这就是我想要达到的目标。@BillHicks,我明白了。它就像显示广告一样,你们第一次点击5秒后就可以看到广告,然后第二次点击就可以进入所需的网站——我的网站更新了answer@Bill希克斯-对于手头的任务来说,这是一个不必要的复杂问题。请参阅下面我的解决方案。
var el = document.getElementById('amur');

el.addEventListener('click',amurFunc);


var clicked = 0;
var d = new Date();
var s = d.getTime();
//console.log(s);


function amurFunc(){
    if(clicked==0){
        window.open('http://google.com', '_blank');
        clicked++;
    }else{
        var clickedDate =  new Date();
        var clickedSecond = clickedDate.getTime();
        //console.log(clickedSecond-s);
        if((clickedSecond-s)>=5000){
            window.open('http://google.com', '_blank');
            s = clickedSecond;
        }

    }

}
//initially allowed to be clicked
var flag = true;

document.getElementById('amur').onclick = function(){
  if (flag) {
    window.open('http://google.com','_blank');
    //disable click
    flag = false;
    //after 5 secs, click will be enabled again
    setTimeout(function(){
      flag=true;
    },5000);
  }
}