将参数从Javascript对象内部传递到另一个函数

时间:2011-07-20 16:23:30

标签: javascript oop

我很好奇我可以将多少这些队列方法封装到Timeline对象中。我想添加DOM以更新已添加到队列中的表,并且好奇我是否应该将它放在同一个对象中或者将其分解为另一个函数,如果是这样,我如何传递参数?

我不确定如何使用对象来实现它。你能写一下addTableRow(this.clips.url)吗?或者我应该将addTableRow()封装到时间轴对象中吗?

存储信息并运行数组命令的两个对象。

        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(),但我不确定我是否正确使用它们。使用当前代码,它使用undefined更新表。我不仅要将URL传递给表,还要将inpoint和outpoint传递给表。

我一直在环顾四周,真的找到了一个像我现在的例子。

2 个答案:

答案 0 :(得分:0)

您创建一个数组但不以数组形式访问它

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

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

答案 1 :(得分:0)

唯一真正的问题是clips.url无效......有两种方法可以在此数组中访问此对象...首先,在将对象推送到数组之前将对象放入变量中,或者只是获取数组中的最后一个对象,就像我在此jsFiddle中所做的那样。

这是使用我讨论的第一个选项的jsFiddle ...首先创建对象,然后将其推送到数组并使用它添加到表中。