用于基于索引动态创建时间的For循环逻辑

时间:2012-07-03 22:26:13

标签: javascript

所以我有43个单选按钮。当选择其中一个时,它将返回其索引号。它是零基础的,所以0-42。每个索引对应于特定时间。 0是早上8:00,42是晚上10:00,每个索引增加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是传递给函数的索引。

1 个答案:

答案 0 :(得分: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');
}