2015-09-28 69 views
0

我正在做一個測驗的應用程序,我想要一個功能,應根據開始時間和結束時間開始測驗。例如,測驗應該在上午9點開始,並應該停止,並在上午9點20分。 時間應由管理員 提供,並在結束時間後自動提交測驗。JavaScript中的代碼要求開始和結束時間爲特定的行爲

+0

我不知道JavaScript的all.i已完成我的項目使用(PHP和MySQL)。唯一剩下的就是倒數計時器。管理員應該上傳測驗的開始時間和結束時間,即開始(2015/09/30 16:00:00)結束(2015/09/30 16:30:00),時間過期後應自動提交測驗。我檢查了這不能在PHP中實現,我不知道JavaScript。 –

回答

0

使用JavaScript的日期()的getTime(),我們可以調用以毫秒爲單位的當前時間(這是因爲午夜的毫秒1970年1月1日數):

var curTime = new Date().getTime(); 

現在我們計算的金額時間以毫秒爲單位,我們希望超時:

  • 20 * 60 * 1000 = 120000毫秒
  • (二十分鐘)(以分鐘秒)(毫秒在第二)

你也可以把它改寫爲僅幾分鐘調整:

var min = 20, var timeLimit = min*60000; 

然後,設置超時基於我們當前的時間和時限:

var timeout = curTime+timeLimit; 

最後,我們使用這將比較當前時間和是否過去(大於)超時,我們稱之爲測驗的關閉功能,並可選擇顯示消息。

if(new Date().getTime() > timeout) { 
    alert("The quiz has expired"); 
} 

完成的代碼看起來有點像這樣:

var curTime = new Date().getTime(), min = 20, var timeLimit = min*60000, timeout = curTime+timeLimit; 
if(new Date().getTime() > timeout) { 
    alert("The quiz has expired"); 
} 

從這裏你可以從中得出一些修改。假設你想在兩個確定的時間段之間設置可用性。您需要一種在開始和結束時間都是人類可讀的輸入方法。所以將日期和時間轉換爲毫秒是必要的。

要存儲日期,您需要一組下拉菜單,然後可以存儲所選日期的開始和結束時間。一個例子下拉將如下圖所示:

<select id="quizStartHours"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    ... 
    <option value="12">12</option> 
</select> 

你將要作出如上的開始和結束時,分(增量爲5在這種情況下建議),月,日(按數量有限幾個月不等,28-31)。如果你只想在同一天不測試幾天,你可以將它簡化爲一個月&月,開始&完成 - 小時&分鐘。

一個項目,可以幫助您在日期下拉菜單是ComboDate,也可以輸入存入日期()格式爲我們與var curTime = new Date().getTime();使用。

現在我們存儲用戶輸入。爲了將它存儲在服務器上,你必須進入ajax和服務器端的變量。我不太確定目前的工作方式,here是一個關於如何使用vbscript來幫助你的詢問,如果你想這樣做的話。如果這是一個問題,希望更有知識的人能夠提供幫助。

現在,我將繼續關注局部變量存儲以用於示例目的。下面是如何記錄從小時下拉列表中用戶輸入一個例子:

var e = document.getElementById("quizStartHours"); 
var strUser = e.options[e.selectedIndex].value; 

爲了使用,我們必須將它存儲在毫秒爲單位將與curTime工作的投入,date()這樣做開箱: ()的行爲here

現在,我們有我們的開始和結束日期,我們現在可以根據當前時間(curTime)和我們的quizStartDate & quizEndDate變量檢查可用性:

var quizAvaliable = quizEndDate > curTime && curTime > quizStartDate; 

最終代碼會是這個樣子:

// on quiz listing & opening check for curTime 
var curTime = new Date().getTime(), quizAvaliable = quizEndDate > curTime && curTime > quizStartDate; 
if(quizAvaliable) { 
    alert("The quiz is open"); 
    //allow access to quiz itself (menu linking, page publicity) 
} 
else if(curTime > quizEndDate) { 
    alert("The quiz has expired"); 
    //save then close quiz, in that order 
} 
else { 
    alert("The quiz has not begun"); 
} 

希望這有助於搞清楚如何做到這一切。在這裏,我主要關注過程的單獨步驟以及如何執行每個步驟。但是,這是客戶端,爲了安全性,您可能想要去服務器端,這是什麼Ajax(異步JavaScript和XML)編碼。

祝你好運!

如果你想了解更多,如果你還沒有,應該查找任何粗體的項目。

+0

謝謝你Leviscus Tempris在這麼詳細的解釋,但我是新來的JavaScript我有副本粘貼你的代碼,但我沒有得到任何結果。 –

相關問題