逐个显示JSON数据

时间:2012-10-07 08:13:31

标签: javascript json

我有像这样的JSON数据

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

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

5 个答案:

答案 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)

@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();

答案 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来显示每一个。