2011-09-09 42 views
2

我在想這是否可能?對於一個網站概念,我想根據用戶的計算機時間在某個小時內彈出或淡入。我嘗試過無法找到,因爲我不知道什麼樣的函數可以控制什麼時候發生效果。在某些時間或時間淡化

任何想法?謝謝。

回答

5

如果您知道在什麼時間淡入(ahem),那麼只需計算出那段時間(據推測在未來)與我們的時間之間的增量。例如:

var dateNow = new Date(); 

setTimeout(function() { 
    doFadingInStuff(); 
}, dateWanted - dateNow); 
+0

注意,如果超時是長(說24小時後的)這個代碼可能會破壞(在某些瀏覽器火立即)。請參閱http://stackoverflow.com/questions/3468607/why-does-settimeout-break-for-large-millisecond-delay-values –

+0

確保函數在執行後自毀,或者設置一個標誌來指示它已被執行以防止它再次執行。 – bhagyas

2

如果你當前的時間,並計算所需的事件發生(因此你必須經過的時間,直到你的事件應該發生的量)的未來時,你可以使用setTimeout()功能在未來的準確時間安排一個函數調用。從這個功能,你會做你的動畫。

0

假設你只需要一定的時間過程中的東西是可見的(即淡入時,它變成小時,淡出時,它已經不再是小時),你可以這樣做:

// element is assumed to be a jQuery object 
var VISIBLE_HOUR=14; // 2:00 PM 
function check() { 
    var isHour=(new Date()).getUTCHours()==VISIBLE_HOUR; 
    var isVisible=element.is(":visible"); 
    if(isHour!=isVisible) { 
     element.fadeToggle(1000); 
    } 
} 
// We probably don't want to check very frequently... 
// You could make it more advanced by checking 
// more frequently closer to the hour in which it would be visible. 
setInterval(check, 30000); 
0

檢查這項fiddle

你的JS

var now = new Date().toString(); 

    $('#fadeMe').html(now).fadeIn(9000) 
0
var eventHour = 16, // 4:00pm 

    // get the current time as a Date 
    now = new Date(), 

    // turn your event time into a Date 
    eventDate = new Date(now.getFullYear(), 
         now.getMonth(), 
         now.getDate(), 
         eventHour), 

    // calculate how many MS until your event 
    eventTimeMS = eventDate - now; 
    dayInMS = 86400000, 

    // your event 
    myEvent = function() { 
     alert('The time is now!'); 
    }; 

// adding 24 hours if already past event time today  
eventTimeMS = eventTimeMS < 0 ? eventTimeMS + dayInMS : eventTimeMS; 

// if currently the right hour, just invoke event 
if (eventHour == now.getHours()) { 
    myEvent(); 

// otherwise start a timer to invoke your event at the appropriate time 
} else { 
    setTimeout(myEvent, eventTimeMS); 
} 
+0

有什麼方法可以將時間更改爲小時和分鐘嗎?我認爲這符合我的需求,但爲了測試它,我希望能夠立即看到效果。感謝您的回答:) – monogatari

+0

是的,如果您查看Date對象如何在Javascript中工作,您應該能夠自己弄清楚。 – mVChr

0

我想你想檢查客戶端的時間,然後淡入或淡出。這就要做到像這樣:

<html> 
<head> 
    <script type="text/javascript" src="jquery.js"></script> 
    <script type="text/javascript"> 
    $(function(){ 
var sunriseHour = 1; 
var sunsetHour = 19; 

function checkForChange() { 
    var nowDate = new Date(); 
    var nowHour = nowDate.getHours(); 
    if ((nowHour >= sunriseHour) && (nowHour < sunsetHour)) { 
     if (sunPosition != 'up') { 
      sunPosition = 'up'; 
      $('#theSun').fadeIn('slow'); 
     } 
    } else { 
     if (sunPosition != 'down') { 
      sunPosition = 'down'; 
      $('#theSun').fadeOut('slow'); 
     } 
    } 
} 

var nowDate = new Date(); 
var nowHour = nowDate.getHours(); 
if ((nowHour >= sunriseHour) && (nowHour < sunsetHour)) { 
    $('#theSun').show(); 
    sunPosition = 'up'; 
} else { 
    $('#theSun').hide(); 
    sunPosition = 'down'; 
} 

setTimeout(checkForChange, 1000); 

    }); 
    </script> 
</head> 

<body> 
    <div id="theSun" style="background: yellow; width: 300px; height: 300px; display: none;"> 
    This box is the sun 
    </div> 
</body> 
</html> 
+0

這是小提琴:http://jsfiddle.net/dCLFA/ –