1

43 個のラジオ ボタンがあります。それらの 1 つが選択されると、そのインデックス番号が返されます。ゼロベースなので、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、 and hrwill always be 0and daywill always be "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');
}
于 2012-07-03T22:27:03.437 に答える