2013-03-10 77 views
0

我想獲取時間的特定值(以html5 htmlmedia timerange.end給出的秒數),並檢查它在我已有的時間列表中的位置這使用javascript檢查時間變量的範圍

00:00:00.00 
00:00:22.00 
00:01:21.00 
00:01:36.00 
00:01:51.00 
00:02:06.00 
00:02:21.00 
00:02:36.00 

我有這些值在捕獲程序的文本文件服務器端硬編碼。 我想檢查並查看它(video_time)所處的兩個值之間,如果src與時隙不對應,則從那裏更改iframe中的src,在上面的列表中有n次,並且對應於在它們之間有n-1個插槽,src將通過/Slide[n-1].html 命名爲/Slide0.html,目前爲止iv創建了一些邏輯來檢查時間,佔位符邏輯改變iframe的src如果該值> 15秒和一些回調來定期調用的東西,

[編輯:去掉了一些不相關的東西] 這裏的問題是,

function category() { 
    var played_ob =video_time_played() ; 
    if (played_ob > 0) 
     var played_num = played_ob; 
    else 
    var played_num = 0; 
    var tes = 15; 
    if (played_num > tes) 
    document.getElementsByTagName("iframe")[0].src="/static/Slide1.html"; 
    else 
    console.log ("meh"); 
}; 

上述我希望的cHEC k在哪個時間範圍內,並設置適當的iframe。這就是我需要幫助,我想什麼做的是如下

/* PSEUDOCODE OF WHAT I WISH TO ACHIEVE BUT DONT KNOW HOW TO DO IT ENTIRELY.*/ 
function category(){ 
    var time_spent = video_time_played_so_far_in_seconds(); 
     /* this part i dont know, especially how to generate the list from a text file serverside */ 
    categories_list = [list of consecutive times i showed above in HH:MM:SS.00] 

    var which_category = function check_in_between_which_two_times_var_lies() { 
     /*********** i DONT know how to code this part either, *******/ 
     the_category_found_as_an_integer_between_0=>n-1 = ? 
     var category = the_category_found_as_an_integer_between_0=>n-1 ; 
     return category ; 
     } 

    function which_new_src (which_category) { 
     /* code to select new src */ 
     var new_src = "/static/Slide"+which_category".html"; 
     return new_src; 
    } 

    function change_src_of_iframe() { 
     var relevant_iframe = document.getElementsByTagName("iframe")[0]; 

     change_src_of_iframe() { 
     var new_src = which_new_src(which_category); 
     relevant_iframe..src= new_src ; 
     } 
+0

有什麼問題?什麼工作,什麼不工作?你還沒有發現問題。在jsfiddle.net中創建演示將有所幫助 – charlietfl 2013-03-10 13:32:14

+1

您需要將行解析爲格式,以便時間可以比較,然後才能對陣列應用二進制搜索。看到[這個答案](http://stackoverflow.com/a/14370245/1048572) – Bergi 2013-03-10 16:00:58

+0

@Bergi謝謝,看到我正在尋找的答案。 – mike 2013-03-11 14:47:26

回答

1

這是我落得這樣做:MM:

與HH有序陣列轉換SS有序秒數組:

function to_seconds (capture){ 
console.log(capture.length); 
var clean = new Array() ; 
for (var i = 0, len = capture.length; i<len; i++) { 
    if (capture[i]) 
     clean.push(capture[i]); 
    } 

console.log(clean.length); 
var ready = clean ; 

var times = new Array() ; 
    for (var i = 0, len = ready.length; i<len; i++) { 

     var obj = ready[i].split(':'); 
     var seconds =obj[0]*3600+obj[1]*60+obj[2]*1; 
     times.push(seconds) ; 
    } 
console.log(times.length); 
return times ; 
} 

,然後檢查在該時間播放到目前爲止落入槽,

function find_category_number (time,list) { 
var number = 0; 
for (var i = 0, len = list.length; i<len; i++) { 
if (time > list[i] && time < list[i+1]) 
    number= i; 
} 

return number ; 
} 

最後生成一個新的src值:

function find_new_src (category_number) { 
var src = "/static/Slide"+category_number+".html" ; 
return src ; 
} 

,這也正是我需要做的大多數,猜打破問題成小模塊部分樣的幫助,我試圖做的一切邏輯的同時,我的大腦凍結了。