1

所以我有 43 个单选按钮。When one of them is selected, it returns their index number. 它是从零开始的,所以它是 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 是传递给函数的索引。

4

1 回答 1

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

您正在分配=, 所以min并且hr将永远是0并且day将永远是"pm"。使用==or===比较:

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');
}
于 2012-07-03T22:27:03.437 回答