2013-03-20 52 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