1

我有这样的 JSON 数据

[
"00-00-02":"first one",
"00-00-04":"the second",
"00-00-09":"third",
.
.
]

例如,我如何显示:first one在指定时间00-00-02然后在其时间显示下一个00-00-04
注意:我应该使用 javascript

4

5 回答 5

1

如果您使用 UNIX 时间,您可以很容易地进行比较 - 例如

变量数据 = {
   "1349598808" : "第一个",
   "1349598845" : "第二个",
   “1349599400”:“第三”
};

现在变种;
变数秒;

设置间隔(函数(){
     现在 = 新日期();
     秒 = Math.round(now.getTime()/1000);
     如果(数据[秒]!=未定义)
     {
          控制台.log(数据[秒]);
          // 或者
          // 原型JS
          $("mydiv").update(数据[秒]);
          // 或者
          // jQuery
          $("#mydiv").html(数据[秒]);
     }
},1000);
​​​
于 2012-10-07T08:43:51.393 回答
1

@Geek Num 88 建议了正确的方法。在这种情况下,通常使用 unix 时间戳。如果你不能改变json,你可以做这样的事情

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();
于 2012-10-07T09:09:49.147 回答
0

您应该知道视频字幕已经是一个东西,您不需要重新实现它们。

您可以track使用 HTML5 中的元素,http ://www.html5rocks.com/en/tutorials/track/basics/,或者如果您需要更多兼容性,您可以使用 popcorn.js:http ://popcornjs.org/ .

如果您不想这样做,那么只需使用 window.setTimeout 来显示每个。

于 2012-10-07T09:16:23.933 回答
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()for 。在这种情况下,函数的第二个参数将是和之间的时间差异。data[i]printMyMessage()data[i-1]setTimeout()data[i]data[i-1]

于 2012-10-07T09:04:34.910 回答
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")
});
于 2012-10-07T08:23:26.000 回答