0

Javascript (jQuery なし) を使用して段落のリストを作成し、(REM 睡眠サイクルに基づいて) 睡眠に最適な時間を取得し、それをページに表示します。コードは次のとおりです。

function sleepnow() {
    var result = '';
    var a = new Date();
    var hour = a.getHours();

    var minutes = a.getMinutes() + 14;
    if (minutes > 60) {
        minutes = minutes - 60;
        hour = hour + 1;
    }

    for (var counter = 0; counter < 6; counter++) {
        if (minutes < 30) {
            minutes = minutes + 30;
        } else {
            minutes = minutes - 30;
            hour = hour + 1;
        }
        hour = hour + 1;

        if (hour >= 24) {
            if (hour === 24) {
                hour = 0;
            } else if (hour === 25) {
                hour = 1;
            }
        }

        if (hour > 9) {
            result = result + '<p>' + hour;
        } else {
            result = result + '<p>0' + hour;
        }

        if (minutes > 9) {
            result = result + ':' + minutes + '</p>';
        } else {
            result = result + ':0' + minutes + '</p>';
        }
    }
    document.getElementById('sleepnow').innerHTML = result;
}

そのリストを逆にして、最初に遠いものを表示するにはどうすればよいですか? .reverse() で 1 時間試しましたが、動作しません。すべてを反転させ、< p > タグを含め、すべてを壊します。

4

2 に答える 2

0

データをhtmlからもう少し分離します。文字列を作成する代わりに、時間の配列を作成します。次に、html文字列を作成するときに、逆の順序でループすることができます。

1. create data structure, contains only numbers, no html (model)
2. convert data to html (view)

var html = '';
for (var counter = YOURDATA.length-1; counter >= 0; counter--) {
    var t = YOURDATA[counter];
    html += ' build your string ' + t + '...';
}

この場合も問題ありませんが、生データの特殊文字(&<> \ "")には注意してください。通常、htmlコンテキストでは、すべてのデータをエスケープする必要があります。

于 2013-02-23T18:43:25.247 に答える
0

まず第一に:答えは次のとおりです。正常に累積する中間アキュムレータ文字列変数currentOneを使用し、結果に別の順序で累積することによって: result = result+ currentOneではなくresult=currentOne+結果。楽しみ:

function sleepnow() {
var result = '';
var a = new Date();
var hour = a.getHours();

var minutes = a.getMinutes() + 14;
if (minutes > 60) {
    minutes = minutes - 60;
    hour = hour + 1;
}

for (var counter = 0; counter < 6; counter++) {
var currentOne = "";

    if (minutes < 30) {
        minutes = minutes + 30;
    } else {
        minutes = minutes - 30;
        hour = hour + 1;
    }
    hour = hour + 1;

    if (hour >= 24) {
        if (hour === 24) {
            hour = 0;
        } else if (hour === 25) {
            hour = 1;
        }
    }

    if (hour > 9) {
        currentOne = currentOne + '<p>' + hour;
    } else {
        currentOne = currentOne + '<p>0' + hour;
    }

    if (minutes > 9) {
        currentOne = currentOne + ':' + minutes + '</p>';
    } else {
        currentOne = currentOne + ':0' + minutes + '</p>';
    }

result = currentOne + result;
}
document.getElementById('sleepnow').innerHTML = result;
}

第二に:反対側にあるものを完全に説明せずに外部リンクを作成しないでください。外部リンクは期限切れになったり、無関係になったりする可能性があります。

第三に:あなたはそのコードをかなり混乱させました:)

于 2013-02-23T18:45:29.363 に答える