0

次のように、JSPページで生成された動的ドロップダウンリストがあります。

<table BORDER=4 BORDERCOLOR=ORANGE width="300px">
    <tr>
        <td>Model:</td>
        <td><select name="model" id="model">
            <c:forEach items="${model_list}" var="item">
                <option value="${item.modelId}">${item.modelName}</option>
            </c:forEach>
        </select></td>
    </tr>
</table>

ここから取得した別の値に基づいて、これらのドロップダウンで選択した値を変更したいだけです。

<table BORDER=4 BORDERCOLOR=ORANGE width="120px" id="product_table">
<c:forEach items="${product_list}" var="car">
    <tr>
        <td><INPUT type="checkbox" name="chk_group" value="${car.carId}" /></td>
        <td><c:out value="${car.carId}" /></td>
        <td><c:out value="${car.model.modelName}" /></td>
        <td><c:out value="${car.model.modelId}" /></td>

</table> 

そして、ここにスクリプトがあります:

function findRowNumber() {
    var rowIdx;
    var rowData = new Array();
    var table = document.getElementById('product_table');
    var rows = table.getElementsByTagName('tr');
    var selectedRow;
    for ( var i = 0; i < rows.length; i++) {
        rows[i].onclick = function() {
            rowIdx = this.rowIndex;
            selectedRow = rows[rowIdx];
            document.getElementById('model').value = selectedRow.cells[3].innerHTML;

        }
    }
}

注: selectedRow.cells[3].innerHTML3 を返しますが、値は変わりません。

4

1 に答える 1

2

あなたの HTML には、ID のmodel. という名前の入力modelもそれを id として持つということですか?

</tr>また、2 番目のテーブルにエンディングがないことにも気付きました。

var rowData = new Array();リテラル表記を使用しないでください: var rowData = [];.

id を追加した後、いくつか<tr>の s を追加すると、うまくいきました。

http://jsfiddle.net/FJfZK/

レンダリングされた HTML 出力は、JavaScript の問題をデバッグするときに非常に役立つことに注意してください。DOM 操作の問題である場合、通常、サーバーが何をしているかは気にしません。

于 2013-03-06T19:31:26.153 に答える