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循环内启动multiplesetInterval()
?@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);
}
}