Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.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
Jquery 循环函数_Jquery_Function_Loops - Fatal编程技术网

Jquery 循环函数

Jquery 循环函数,jquery,function,loops,Jquery,Function,Loops,我想制作一个java脚本,每5秒自动循环一次我的函数。这是我的代码 function showlisten() { document.getElementById('listen').style.display = "block"; document.getElementById('review').style.display = "none"; document.getElementById('earn').style.display = "none"; documen

我想制作一个java脚本,每5秒自动循环一次我的函数。这是我的代码

function showlisten() {
   document.getElementById('listen').style.display = "block";
   document.getElementById('review').style.display = "none";
   document.getElementById('earn').style.display = "none";
   document.getElementById('listen-text').style.display = "block";
   document.getElementById('review-text').style.display = "none";
   document.getElementById('earn-text').style.display = "none";
}
function showreview() {
   document.getElementById('listen').style.display = "none";
   document.getElementById('review').style.display = "block";
   document.getElementById('earn').style.display = "none";
   document.getElementById('listen-text').style.display = "none";
   document.getElementById('review-text').style.display = "block";
   document.getElementById('earn-text').style.display = "none";
}
function showearn() {
   document.getElementById('listen').style.display = "none";
   document.getElementById('review').style.display = "none";
   document.getElementById('earn').style.display = "block";
   document.getElementById('listen-text').style.display = "none";
   document.getElementById('review-text').style.display = "none";
   document.getElementById('earn-text').style.display = "block";
}

您正在查找setInterval();)

这个很简单

var clearToken = window.setInterval(function () {
    showlisten(); showreview(); showearn();
}, 5000);
感谢QuickSilver博士发现了需求的真正本质。更新如下:

function showlisten(){
    document.write("listen<br />");
}
function showreview(){
    document.write("review<br />");
}
function showearn(){
    document.write("earn<br />");
}

showlisten();
window.setInterval(function () {
    showlisten();
}, 15000);
window.setTimeout(function () {
    showreview();
    window.setInterval(function(){
        showreview();        
    }, 15000);
}, 5000);
window.setTimeout(function () {
    showearn();
    window.setInterval(function () {
        showearn();
    }, 15000);
}, 10000);
函数showlisten(){
记录。写下(“倾听
”); } 函数showreview(){ 文件。书写(“审阅
”); } 函数showeren(){ 记录。填写(“赚取
”); } showlisten(); window.setInterval(函数(){ showlisten(); }, 15000); setTimeout(函数(){ showreview(); setInterval(函数(){ showreview(); }, 15000); }, 5000); setTimeout(函数(){ showeren(); window.setInterval(函数(){ showeren(); }, 15000); }, 10000);
我更喜欢QuickSilver的方法,但是复制样式是多余的,所以我用不同的方法给你们两种方法


我为它创建了一个提琴,但该网站现在似乎正在为我播放:希望该链接适合您。

我应该缓存DOM元素,如:

function loopFunctions(){
   var elemListen = document.getElementById('listen'),
      elemReview = document.getElementById('review'),
      elemEarn = document.getElementById('earn'),
      elemListenText = document.getElementById('listen-text'),
      elemReviewText = document.getElementById('review-text'),
      elemEarnText = document.getElementById('earn-text'),
      functions = [
         function(){
            elemListen.style.display = "block";
            elemReview.style.display = "none";
            elemEarn.style.display = "none";
            elemListenText.style.display = "block";
            elemReviewText.style.display = "none";
            elemEarnText.style.display = "none";
         },
        function(){
            elemListen.style.display = "none";
            elemReview.style.display = "block";
            elemEarn.style.display = "none";
            elemListenText.style.display = "none";
            elemReviewText.style.display = "block";
            elemEarnText.style.display = "none";
         },
         function(){
            elemListen.style.display = "none";
            elemReview.style.display = "none";
            elemEarn.style.display = "block";
            elemListenText.style.display = "none";
            elemReviewText.style.display = "none";
            elemEarnText.style.display = "block";
         } 
      ],
      idInterval = setInterval(function(){
         for (var i = functions.length; i >= 0; i--) {
            functions[i]();
         };
      }, 5000);
}

您是否希望它处于“侦听”状态5秒钟,然后处于“审阅”状态5秒钟,然后处于“获取”状态5秒钟,然后循环

如果是这样,您需要一个由3个设置超时组成的链:

function dolisten() {
   showlisten();
   setTimeout(doreview,5000);
}
function doreview() {
   showreview();
   setTimeout(doearn,5000);
}
function doearn() {
   showearn();
   setTimeout(dolisten,5000);
}

您也可以在15秒的时钟上设置3个不相关的
设置间隔
,但我不确定它们是否会保持同步,这其实并不简单。

您没有使用jQuery。也许你应该,就像你标记的;)
$('#listen').hide()
document.getElementById('listen').style.display=“无”要短得多这并不特别重要
getElementById
速度很快。像这样的优化是在浪费你的时间,除非你已经确定它是一个瓶颈。(更复杂的元素选择器,如jQuery或Prototype中经常使用的元素选择器,可能会比较慢,这可能是一个很好的建议——但即使如此,只有当您的页面很大并且选择器被执行了很多次时,才是如此)这是有原因的;一切都是权衡。优点包括它使代码更短,更容易阅读,因为您不必去检查变量是什么。缺点包括,如果你改变它,你必须在多个地方改变它。特别是在jQuery中,经常会看到重复使用
$(“#listen”)
样式选择器,我不会急于将它们排除,除非它发生在一个导致确定的性能问题的紧密循环中。我尝试了这个方法,它会转到最后一个函数,并在控制台中查看,您的代码中可能有未处理的异常。您需要发布完整的代码。除非你这么做,否则我真的帮不了你。“你能做一把小提琴吗?”康诺库希恩·穆尔霍尔说得很对,那将进入最后一个州并留在那里。您将看不到
showlisten
showreview
的效果,因为
showearn
发生在最后,并撤消它们所做的一切;我想这三个州之间都需要5秒的延迟,见我的答案。谢谢你帮我发现了这个要求,DQS。我使用setInterval作为替代方法,所以现在他有两种方法,尽管我更喜欢你的方法,如果你不是先到的话,我会这样做。更新了上面的内容,并将您的答案也添加到+1中。