JQuery я могу использовать append / appendTo в этой функции JavaScript - PullRequest
0 голосов
/ 10 марта 2011

Я создал функцию, которая успешно добавляет таблицу со строками / ячейками и заполняет их из массива. Проблема в том, что они добавляются в верхнюю часть таблицы.

Он делает это, потому что строка var row = tbody.insertRow(r); ... я думаю / надеюсь.

Функция, указанная в приведенной ниже ссылке: appendTable(id)

Вот рабочий пример, который добавляется к началу: http://jsfiddle.net/JEAkX/4/

Я думал, что-то вроде этого будет работать: var row = insertRow(r).appendTo('tbody>tr:last'); однако это просто сломало функцию.

Я также пробовал МНОГИЕ различные комбинации .append() и .appendTo() на одной и той же линии, но безуспешно. В качестве последнего шага я попробовал варианты на линии cell.innerHTML = "<input type='text' size='1' value='" + subset[i++] + "' />", но я думаю, что к тому времени местоположение уже определено.

Вот функция, извлеченная из примера:

function appendTable(id)
{
    var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
    var i = 0;
    for (var r = 0; r < 2; r++) {
        var row = tbody.insertRow(r);
        for (var c = 0; c < 4; c++) {
            var cell = row.insertCell(c);
            cell.innerHTML = "<input type='text' size='1' value='" + subset[i++] + "' />"
        }
    }
}

С одной стороны, я не пытался (безуспешно) insertAfter в какой-то момент, но читал, что я не смогу использовать его на том, чего не было при загрузке страницы.

Ответы [ 2 ]

1 голос
/ 10 марта 2011

insertRow добавляет строку с указанным индексом.

Когда этот параметр (r в вашем коде) равен нулю, он добавляет строку в верхнюю часть таблицы.,Вместо этого, чтобы добавить их в конец, используйте текущую длину таблицы в качестве отправной точки:

function appendTable(id)
{
    var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
    var length = tbody.rows.length;
    for (var r = length; r < length + 1; r++) {
        var row = tbody.insertRow(r);
        // etc.
    }
}
0 голосов
/ 10 марта 2011

Создание строки для строки и добавление ее в tbody работает, и из документов это выглядит как предполагаемое использование appendTo ().

function appendTable(id)
{
    var tbody = document.getElementById(id).getElementsByTagName("tbody")[0];
    var i = 0;
    for (var r = 0; r < 2; r++) {
        var row = tbody.insertRow(r);
        var rowtext = '<tr>';
        for (var c = 0; c < 4; c++) {
            rowtext += '<td><input type="text" size="1" value="x" /></td>';
        }
        rowtext += '</tr>';
        $(rowtext).appendTo(tbody);
    }
}
...