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

@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 に答える
1

UNIX時間を使用している場合は、比較をかなり簡単に行うことができます。たとえば、

var data = {
   "1349598808": "最初のもの"、
   "1349598845": "2番目"、
   "1349599400":"サード"
};

var now;
var秒;

setInterval(function(){
     now = new Date();
     秒=Math.round(now.getTime()/ 1000);
     if(data [seconds]!= undefined)
     {{
          console.log(data [seconds]);
          // また
          // PrototypeJS
          $( "mydiv")。update(data [seconds]);
          // また
          // jquery
          $( "#mydiv")。html(data [seconds]);
     }
}、1000);
。
于 2012-10-07T08:43:51.393 に答える
0

ビデオ字幕はすでに重要であり、それらを再実装する必要はないことに注意する必要があります。

trackHTML5、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);
}

または、関数呼び出しでforsetTimeout()を呼び出すこともできます。その場合の関数の2番目の引数は、との間の時間差です。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 に答える