我有像这样的JSON数据
[
"00-00-02":"first one",
"00-00-04":"the second",
"00-00-09":"third",
.
.
]
我如何在指定的时间first one
中显示00-00-02
,然后在00-00-04
时显示下一个?
注意:我应该使用javascript
答案 0 :(得分:1)
如果您使用UNIX时间,您可以轻松地进行比较 - 例如
var data = { "1349598808" : "first one", "1349598845" : "the second", "1349599400" : "third" }; var now; var seconds; setInterval(function(){ now = new Date(); seconds = Math.round(now.getTime()/1000); if(data[seconds] != undefined) { console.log(data[seconds]); // OR // PrototypeJS $("mydiv").update(data[seconds]); // OR // jquery $("#mydiv").html(data[seconds]); } },1000);
答案 1 :(得分:1)
var data = {
"00-00-02":"first one",
"00-00-04":"the second",
"00-00-09":"third"
}
var timeout;
var start = new Date();
function showIt(){
var now = new Date();
var diff = now - start;
var hh = Math.floor(diff / 600000);
hh = (hh < 10)?"0" + hh : hh;
var mm = Math.floor((diff % 3600000) / 60000);
mm = (mm < 10)?"0" + mm : mm;
var ss = Math.floor((diff % 60000 ) / 1000);
ss = (ss < 10)?"0" + ss : ss;
if(data[hh + "-" + mm + "-" + ss]){
console.log(data[hh + "-" + mm + "-" + ss]);
}
clearTimeout(timeout);
timeout = setTimeout(showIt, 1000);
}
showIt();
答案 2 :(得分:0)
你有一个只是json的数组吗?如果你有json,以下内容将起作用:
var data = {
"00-00-02":"first one",
"00-00-04":"the second",
"00-00-09":"third"
}
Object.keys(data).forEach(function(key) {
var val = data[key];
console.log("the " + val + " had a time of " + key + " seconds")
});
答案 3 :(得分:0)
您可以尝试使用setTimeout(fn, time)
函数在计算的间隔后调用“first-one”,“the-second”....伪代码就像
data = ["00-00-02":"first one", "00-00-04":"the second", "00-00-09":"third",...];
//using [key: value] notation
for (i=0; i<data.length; i++) {
eventTime = timeInMilliSeconds(data[i].key);
setTimeout(printMyMessage(data[i].value, eventTime);
}
或者您可以在setTimeout()
的函数调用data[i]
中为printMyMessage()
调用data[i-1]
。在这种情况下,setTimeout()
函数的第二个参数是data[i]
和data[i-1]
之间的时间差异。
答案 4 :(得分:0)
你应该知道视频字幕已经是一个东西,你不需要重新实现它们。
您可以从HTML5 http://www.html5rocks.com/en/tutorials/track/basics/获取track
元素,或者如果您需要更多兼容性,可以使用popcorn.js:http://popcornjs.org/。
如果您不想这样做,那么只需使用window.setTimeout来显示每一个。