首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JavaScript使用用户的时间(秒)显示消息

JavaScript使用用户的时间(秒)显示消息
EN

Stack Overflow用户
提问于 2020-04-05 10:33:41
回答 2查看 84关注 0票数 0

我有一个包含5000个文本字符串的列表,我为每个字符串分配了一个时间(在0到86400秒之间)。

我想获取用户的当前时间并显示相应的文本字符串,然后更新当用户的时间更改时显示的文本以匹配下一个文本字符串等等……

我对JavaScript非常陌生,所以我不确定这是否是最好的解决方案,但我想使用两个数组,一个存储文本字符串,另一个存储时间。代码可以从“time”数组中找到正确的时间,然后使用与其他数组相同的索引显示文本字符串。如果用户的当前时间介于两个值之间,则应选择第一个值。

例如:

代码语言:javascript
复制
var interval = [0, 1728, 3456, 5184, 6912, 8640, 10368, 12096, 13824, 15552,
17280, 19008, 20736, 22464, 24192, 25920, 27648, 29376, 31104, 32832,
34560, 36288, 38016, 39744, 41472, 43200, 44928, 46656, 48384, 50112,
51840, 53568, 55296, 57024, 58752, 60480, 62208, 63936, 65664, 67392,
69120, 70848, 72576, 74304, 76032, 77760, 79488, 81216, 82944, 84672];

var textstring = ["Verse 1", "Verse 2", "Verse 3", "Verse 4", "Verse 5", "Verse 6", "Verse 7", "Verse 8", "Verse 9", "Verse 10",
"Verse 11", "Verse 12", "Verse 13", "Verse 14", "Verse 15", "Verse 16", "Verse 17", "Verse 18", "Verse 19", "Verse 20",
"Verse 21", "Verse 22", "Verse 23", "Verse 24", "Verse 25", "Verse 26", "Verse 27", "Verse 28", "Verse 29", "Verse 30",
"Verse 31", "Verse 32", "Verse 33", "Verse 34", "Verse 35", "Verse 36", "Verse 37", "Verse 38", "Verse 39", "Verse 40",
"Verse 41", "Verse 42", "Verse 43", "Verse 44", "Verse 45", "Verse 46", "Verse 47", "Verse 48", "Verse 49", "Verse 50"];

function displayverse() {
    var now = new Date();
    var hour = now.getHours();
    var minute = now.getMinutes();
    var second = now.getSeconds();
    var currenttime = (hour * 3600) + (minute * 60) + second;

    for (var i = 0; i < interval.length; i++) {
        if (currenttime >= interval[i][0] && currenttime < interval[i][1]) {
            document.getElementById('verse').innerHTML = textstring[i][0];
        }
    }
}

我现在的代码不起作用。我认为我写的“如果”声明是不正确的。有人知道我做错了什么吗?

下面是我的当前代码:https://jsfiddle.net/wrgt1/9bs4eu5q/1/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-05 10:51:52

在您的代码中:interval[i]不是一个数组,它已经是一个值,因此您将在interval[i][0]interval[i][1]上获得undefined。要获得值,只需要第一个值为interval[i],第二个值为interval[i+1]

代码语言:javascript
复制
for (var i = 0; i < interval.length; i++) {
    if (currenttime >= interval[i] && currenttime < interval[i+1]) {
        document.getElementById('verse').innerHTML = textstring[i];
    }
}
票数 0
EN

Stack Overflow用户

发布于 2020-04-05 11:12:00

这是修改过的小提琴,有一个代码错误:

https://jsfiddle.net/ujfpy47a/

修改后的代码:

代码语言:javascript
复制
     for (var i = 0; i < interval.length; i++) {
        if (currenttime >= interval[i] && currenttime < interval[i+1]) {
          document.getElementById('verse').innerHTML = textstring[i];
        }
      }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61041237

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档