2012-07-03 67 views
1

所以我有43個單選按鈕。當他們中的一個被選中時,它返回他們的索引號。它基於零,所以它的0-42。每個索引對應一個特定的時間。 0是早上8點,42是晚上10點,每個指數增加20分鐘的時間。從本質上講,我試圖生成我需要的時間,而不必爲每個索引手動創建if語句。這是迄今爲止我破碎的代碼。基於索引動態創建時間的循環邏輯

function decipherIndex(radx) { 
    var actime = ""; 
    var hr = 8; 
    var min = 0; 
    var day = "am"; 
    for (i=0;i<radx;i++) { 
     min = min + 20; 
     if (min = 60) { 
      hr = hr + 1; 
      min = 0; 
     } 
     if (hr = 13) { 
      hr = 0; 
      day = "pm"; 
     } 
    } 
    actime = hr + ":" + min + day; 
    alert(actime); 
} 

希望有人能幫助我通過我的邏輯在這裏工作。 radx是傳遞給函數的索引。

回答

3
if (min = 60) { 
    hr = hr + 1; 
    min = 0; 
} 
if (hr = 13) { 
    hr = 0; 
    day = "pm"; 
} 

你與=分配,所以minhr永遠是0day永遠是"pm"。使用=====比較:

if (min == 60) { 
    hr = hr + 1; 
    min = 0; 
} 

if (hr == 13) { 
    hr = 0; 
    day = "pm"; 
} 

然而,一個循環是沒有必要的;所有你需要的是一點點數學。

function decipherIndex(i) { 
    var t = 60 * 8 + i * 20; 
    var min = t % 60; 
    var hr = t/60 | 0; 

    return hr % 12 + ':' + (min < 10 ? '0' : '') + min + (hr >= 12 ? ' PM' : ' AM'); 
} 
+0

補充信息:''===是conversionless比較http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use – TheZ

+0

我的兩個字縮短:P – mellamokb

+0

謝謝,這就是我所需要的。 – Vikram