2013-04-04 124 views
-2

我想作一个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"; 
} 
+1

[setInterval](https://developer.mozilla.org/en-US/docs/DOM/window.setInterval) – Andreas 2013-04-04 20:53:37

+3

您没有使用jQuery。 ('#listen')。hide()'比'document.getElementById('listen')短很多。style.display =“none”;' – drquicksilver 2013-04-04 20:55:40

回答

4

漂亮简单这一个。

var clearToken = window.setInterval(function() { 
    showlisten(); showreview(); showearn(); 
}, 5000); 

感谢Dr. 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); 

我更喜欢的QuickSilver的方法这一点,但复制的风格是多余的,所以我不同走近它给你会对此有两种方式。

我为它创建了一个小提琴,但该网站似乎正在为我打气:http://jsfiddle.net/jdjE5/希望链接对您有用。

+0

我试过了这和它进入最后的功能,并坚持在那里 – 2013-04-05 09:29:45

+0

看看你的控制台,你可能有一个未处理的异常发生在你的代码的地方。 – 2013-04-05 14:31:40

+0

控制台是空白的? – 2013-04-08 12:28:32

0

你正在寻找的setInterval();)

-1

我应该缓存的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); 
} 
+1

这并不特别重要。 'getElementById'很快。像这样的优化会浪费你的时间,除非你已经确定它是一个瓶颈。 (更复杂的元素选择器,比如jQuery或Prototype中经常使用的元素选择器更可能会很慢,这可能是很好的建议 - 但即使如此,只有当页面很大并且选择器执行很多次时才会这样) – drquicksilver 2013-04-04 21:15:08

+0

' getElementId'很快,但没有理由执行它3倍以上需要... – fernandosavio 2013-04-08 17:48:50

+0

有一个原因;一切都是权衡。优点包括它使得代码更短,更容易阅读,因为你不必去检查变量是什么。缺点包括如果你改变它,你必须在多个地方改变它。特别是在jQuery中,重复使用'$('#''')样式选择器是非常常见的,我不会急于将它们排除在外,除非它发生在导致已识别的性能问题的紧密循环中。 – drquicksilver 2013-04-09 06:16:45

1

你希望它是在“听”的状态,持续5秒,然后将“审核”状态5秒,那么“赚”状态持续5秒,然后循环?

如果是这样,你需要的3下一个定时器,一个链条:

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

您也可能会拥有3无关setIntervals上15秒时钟,但我不知道,如果他们想保持同步,它不真的很简单。