2011-07-20 19 views
0

タイムラインオブジェクトにカプセル化できるキューメソッドがいくつあるのか不思議です。私は、キューに追加されているものをテーブルに更新するためにDOMを追加したいと思います。同じオブジェクトに配置するか、別の関数に分割する必要があるかどうか不思議です。 ?Javascriptオブジェクトの内部から別の関数に引数を渡す

これをオブジェクトで実装する方法は不明です。あなたはちょうどaddTableRow(this.clips.url)を書くでしょうか?または、私はタイムラインオブジェクトにaddTableRow()をカプセル化する必要がありますか?

情報を格納し、配列コマンドを実行する2つのオブジェクト。

 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> 

私はすでに.apply試みた()とは.call()が、私はよく分かりません。現在のコードでは、テーブルを未定義で更新します。私はURLだけでなく、inpointとoutpointもテーブルに渡したいと思っています。

私は見ていて、実際に私が持っているような例を見つけました。

答えて

0

としてそれにアクセスしていない...あなたはこの配列内のこのオブジェクトにアクセスできる2つの方法があります。最初に、配列にプッシュする前にオブジェクトを変数に入れてください。または、jsFiddleでここで行ったように、配列の最後のオブジェクトを取得するだけです。

ここでは最初に説明したオプションを使用してjsFiddleです。オブジェクトを最初に作成し、それを配列にプッシュしてテーブルに追加していました。

+0

ありがとう!あなたは$ JQueryを使用していますか?私の方法よりも頑強ですか?私は現在のメイドがFirefox上で動作していないことに気づいた。 –

+0

jQueryを使わずにJSについて考えることはもうありません...しかし、私は正規のJSに私の応答を入れておくべきですが、はい、jQueryは本当に理由が見当たらないほど簡単に、それまたは他のライブラリを使用しないでください。しかし、jQueryは間違いなく私のお気に入りです... – ar3

0

あなたがあなたの唯一の本当の問題はclips.urlが無効であることである配列を作成するが、配列

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

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

ありがとうございます! –

関連する問題