Передача аргументов изнутри объекта Javascript другой функции - PullRequest
0 голосов
/ 20 июля 2011

Мне любопытно, сколько из этих методов очереди я могу инкапсулировать в объект Timeline. Я хотел бы добавить DOM, чтобы обновить таблицу с тем, что было добавлено в очередь, и мне любопытно, должен ли я поместить ее в этот же объект или разбить ее на другую функцию, если да, то как мне затем передать аргументы

Я не уверен, как реализовать это с объектами. Вы бы просто написали это 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>

Я уже пробовал .apply () и .call (), но я не уверен, правильно ли я их использовал. С текущим кодом он обновляет таблицу с неопределенным. Я хочу не только передать URL, но и точку входа и точку в таблицу.

Я искал вокруг и действительно нашел пример, похожий на тот, который у меня сейчас есть.

Ответы [ 2 ]

0 голосов
/ 20 июля 2011

Ваша единственная реальная проблема в том, что clips.url недействителен ... есть два способа получить доступ к этому объекту в этом массиве ... во-первых, поместить объект в переменную перед тем, как передать его в массив, или просто получить последний объект в массиве, как я делал здесь в этом jsFiddle .

Вот jsFiddle , использующий первый вариант, который я обсуждал ... который сначала создавал объект, а затем помещал его в массив и использовал для добавления в таблицу .

0 голосов
/ 20 июля 2011

Вы создаете массив, но не обращаетесь к нему как к массиву

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

addTableRow(currentClip.url,currentClip.inpoint,currentClip.outpoint);
.
.
.
 function addTableRow(url,ip,op) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...