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() 尝试了一个小时,但我无法让它工作,它只会翻转所有内容,包括 < 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 = currentOne + result而不是result = 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 回答