Выберите конкретную ячейку таблицы в JavaScript

0

У меня такой HTML-код:

<table id="laboral">
    <tr>
        <td><input type="text" name="start"/></td>
        <td><input type="text" name="end"/></td>
        <td><textarea name="desc"></textarea></td>
        <td><button type="button" onclick="saveValues(this);createRow('laboral')"> + </button></td>
    </tr>
</table>

Я хочу сохранить значения в трех ячейках (2 входа и 1 текстовая область).

Кнопка создает еще одну строку, аналогичную первой, с теми же входами и именами. Проблема в том, что я не знаю, как получить доступ к этой строке, то есть к строке, которой принадлежит кнопка.

Я пробовал с this.parentNode.parentNode, но не работал.

  • 0
    Вам нужно будет передать this в createRow . Тогда это должно быть [[yourParameterName]].parentNode.parentNode вместо this.parentNode.parentNode . Или измените вызов createRow.call(this, "laboral") чтобы вы могли использовать this.parentNode.parentNode
Теги:

2 ответа

1
Лучший ответ

Попробуй это

<table id="laboral">
    <tr>
        <td><input type="text" name="start"/></td>
        <td><input type="text" name="end"/></td>
        <td><textarea name="desc"></textarea></td>
        <td><button type="button" onclick="saveValues(this)"> + </button></td>
    </tr>
</table>

var inputVals = [];

function saveValues(elm) {
    //         button   td         tr        tbody     table
    var table = elm.parentNode.parentNode.parentNode.parentNode;

    //  iterating through the first row cells
    for (var i = 0; i<table.rows[0].cells.length-1; i++) {
        //  the current cell
        var cell = table.rows[0].cells[i];
        //  pushing the input elm value into the array
        inputVals.push(cell.childNodes[0].value);
        //  retrieving the pushed value
        alert(inputVals[i]);
    }
}

Пример скрипта

Вы можете изменить код.

1

Вы передаете ссылку на кнопку в saveValues, поэтому в saveValues первый аргумент будет ссылаться на кнопку. Позвольте называть этот аргумент btn. btn.parentNode будет td содержащим кнопку, а 'btn.parentNode.parentNode будет tr содержащий это td. Так:

function saveValues(btn) {
    var tr = btn.parentNode.parentNode;
    // Work with 'childNodes' and the 'childNodes' of those children to get the values
}
  • 0
    Спасибо чувак! это как раз то что мне нужно! :)
  • 0
    Я пытаюсь это и не работает: var tr = button.parentNode.parentNode; оповещение (tr.childNodes [0] .childNodes [0] .value);
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню