我有一个包含5000个文本字符串的列表,我为每个字符串分配了一个时间(在0到86400秒之间)。
我想获取用户的当前时间并显示相应的文本字符串,然后更新当用户的时间更改时显示的文本以匹配下一个文本字符串等等……
我对JavaScript非常陌生,所以我不确定这是否是最好的解决方案,但我想使用两个数组,一个存储文本字符串,另一个存储时间。代码可以从“time”数组中找到正确的时间,然后使用与其他数组相同的索引显示文本字符串。如果用户的当前时间介于两个值之间,则应选择第一个值。
例如:
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/
发布于 2020-04-05 10:51:52
在您的代码中:interval[i]不是一个数组,它已经是一个值,因此您将在interval[i][0]或interval[i][1]上获得undefined。要获得值,只需要第一个值为interval[i],第二个值为interval[i+1]。
for (var i = 0; i < interval.length; i++) {
if (currenttime >= interval[i] && currenttime < interval[i+1]) {
document.getElementById('verse').innerHTML = textstring[i];
}
}发布于 2020-04-05 11:12:00
这是修改过的小提琴,有一个代码错误:
https://jsfiddle.net/ujfpy47a/
修改后的代码:
for (var i = 0; i < interval.length; i++) {
if (currenttime >= interval[i] && currenttime < interval[i+1]) {
document.getElementById('verse').innerHTML = textstring[i];
}
}https://stackoverflow.com/questions/61041237
复制相似问题