2013-04-04 61 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秒時鐘,但我不知道,如果他們想保持同步,它不真的很簡單。