2013-03-20 107 views
0

我試圖顯示一個JavaScript對象的「文本」屬性,以在控制檯中顯示其時間碼屬性時顯示。將「時間碼」屬性與Vimeo播放器中的經過時間進行比較。這很好,我遇到的問題是由於Vimeo API每秒返回多個毫秒數據「點擊量」,所以我看到我的文本在控制檯中多次彈出。如何在while循環中只顯示一次文本?

任何人都可以建議如何顯示每個文本屬性一次,只有一次?

notes_ex = [ 
    { 
    timecode: 2, 
    text: 'Hi there!' 
    }, 
    { 
    timecode: 7, 
    text: 'Hi again!' 
    } 
]; 

function ready(player_id) { 
    var player = $f(player_id); 

    player.addEvent('ready', function() { 
     console.log('ready'); 
     player.addEvent('playProgress', onPlayProgress); 
    }); 

    function onPlayProgress(data, id) { 
    timeElapsed = Math.floor(data.seconds); 
    console.log('timeElapsed:' + timeElapsed); 

    while (timeElapsed++) { 
     for (var i = 0; i < notes_ex.length; i++) { 
     timecode = notes_ex[i].timecode; 
     if (timecode === timeElapsed) { 
      console.log(notes_ex[i].text); 
     } 
     } 
     break; 
    } 
    } 

回答

2

您是否可以分配第二個變量來表示它何時被觸發?因此,像這樣:

var z = 0; 

if (timecode === timeElapsed && z == 0) { 
    console.log(notes_ex[i].text); 
    z++; 
} 

有點不完整的,但你的原則...

+0

我要建議同樣的事情。 – 2013-03-20 20:54:08

+0

謝謝你的例子是有幫助的,因爲它導致我提出我的解決方案。不幸的是,這隻適用於如果我想控制檯只記錄一個文本屬性,而不是所有的一次。 – 2013-03-20 22:20:49

+0

「notes_ex」的值是固定的還是動態變化的? – Mike 2013-03-20 22:34:33