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].innerHTML返回 3 但值不变。

4

1 回答 1

2

我在您的 HTML 中没有看到任何 id 为model. 您的意思是名称为的输入model也具有该 ID 吗?

我还注意到你的第二张桌子没有结尾</tr>

不要使用var rowData = new Array();使用文字表示法:var rowData = [];.

添加 id 后,添加几个<tr>s,它对我来说很好:

http://jsfiddle.net/FJfZK/

请注意,您呈现的 HTML 输出在调试 JavaScript 问题时会更有帮助当它是一个 DOM 操作问题时,我们通常不关心您的服务器在做什么。

于 2013-03-06T19:31:26.153 回答