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>

私が望むのは、3 つのセル (2 つの入力と 1 つのテキストエリア) に値を保存することです。

このボタンは、最初の行と同じように、同じ入力と名前で別の行を作成します。問題は、この行、つまりボタンを所有する行にアクセスする方法がわからないことです。

this.parentNode.parentNode で試しましたが、うまくいきませんでした。

4

2 に答える 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's value into the array
        inputVals.push(cell.childNodes[0].value);
        //  retrieving the pushed value
        alert(inputVals[i]);
    }
}

フィドルの例

コードを変更できます。

于 2013-11-09T16:57:30.043 に答える