慕少森
2022-06-16 09:52:49
我有一個包含 5000 個文本字符串的列表,并且我為每個字符串分配了一個時間(在 0-86400 秒之間)我想獲取用戶的當前時間并顯示相應的文本字符串,然后在用戶的時間發生變化時更新顯示的文本以匹配下一個文本字符串等等...我對 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]; } }}我當前的代碼不起作用。我認為我寫的'if'語句是不正確的。有人對我做錯了什么有任何想法嗎?這是我當前的代碼:https ://jsfiddle.net/wrgt1/9bs4eu5q/1/
2 回答

哈士奇WWW
TA貢獻1799條經驗 獲得超6個贊
在您的代碼中:interval[i]不是數組,它已經是一個值,因此您正在undefined使用interval[i][0]or interval[i][1]。要獲得價值,您只需要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];
}
}

守候你守候我
TA貢獻1802條經驗 獲得超10個贊
這是修改后的小提琴,出現代碼錯誤:
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];
}
}
添加回答
舉報
0/150
提交
取消