2011-07-20 75 views
0

我很好奇這些隊列方法中有多少可以封裝到時間軸對象中。我想添加DOM來更新已添加到隊列中的表,並且很好奇我是否應該將它放在同一個對象中,或者將它分解爲另一個函數,如果是這樣,那麼我如何傳遞參數?將JavaScript對象內部的參數傳遞給另一個函數

我不確定如何與對象一起實現。你會只寫它addTableRow(this.clips.url)?或者我應該將addTableRow()封裝到Timeline對象中嗎?

存儲信息並運行陣列命令的兩個對象。

 function Clip() { 
      this.url = userInput.url.value; 
      this.inpoint = userInput.inpoint.value; 
      this.outpoint = userInput.outpoint.value; 
     } 

     function Timeline() { 
      this.clips = []; 

      this.queue = function() { 
       this.clips.push(new Clip()); 
       addTableRow(this.clips.url); //Creates the new table with the user's URL inside. 
      } 
     } 

     var myTime = new Timeline(); 

     //Adds the new table row. 
     function addTableRow(url) { 
      function delayed() { 
       var table=document.getElementById("tblVideo"); 
       var lastRow = table.rows.length; 
       // if there's no header row in the table, then iteration = lastRow + 1 
       var iteration = lastRow; 
       var row = table.insertRow(lastRow); 
       var cell1=row.insertCell(0); 
       cell1.innerHTML=url; 
      } 
      setTimeout(delayed,500); 
     } 

如何與用戶輸入的工作:

 <form id = "userInput"> 
     <p> 
     Url: <input type="text" id="url" size="30" /> 
     Start Time: <input type="text" id="inpoint" size="2" /> 
     End Time: <input type="text" id="outpoint" size="2" /> 
     <input type="button" onclick="myTime.queue()" value="Add" /> 
     </p> 
     </form> 

     <table border = "1" id = "tblVideo"> 
      <tr> 
       <th>Youtube URL</th> 
      </tr> 
     </table> 

我已經嘗試過。適用()和.CALL(),但我不知道,如果我是正確使用它們。使用當前的代碼,它用未定義的表更新表。我不僅要傳遞url,還要傳遞表的內點和外點。

我一直在環顧四周,真的找到了一個像我目前擁有的例子。

回答

0

你唯一真正的問題是clips.url是無效的......還有,你可以在此數組中訪問該對象有兩種方式。首先,將對象放到一個變量中,然後再將它推入數組,或者像這樣在jsFiddle中獲取數組中的最後一個對象。

這裏是jsFiddle使用我討論的第一個選項...它先創建對象,然後將它推到數組並使用它添加到表中。

+0

謝謝!您使用的是$ JQuery嗎?比我的方法更強大嗎?我注意到我目前的methond不適用於Firefox。 –

+0

我甚至沒有考慮過沒有jQuery的JS ......但我應該把我的迴應放在普通的JS中,但是,是的,jQuery允許你做這麼多,這麼容易和乾淨,以至於我沒有看到任何真正的原因不要使用它或其他庫。但是,jQuery絕對是我最喜歡的... – ar3

0

您創建一個數組,但不訪問它作爲一個數組

var currentClip = this.clips[this.clips.length-1]; 

addTableRow(currentClip.url,currentClip.inpoint,currentClip.outpoint); 
. 
. 
. 
function addTableRow(url,ip,op) { 
+0

非常感謝! –

相關問題