1

我有一个表单,它显示数据库中的多行,有 4 列。从这些记录中,我需要在第 4 列中写入一个新值并更新数据库记录。但是每当我尝试时,只能更新/读取第一行值。但不是其他行!这可能是由于相同的“名称=重定向”,因为它是从“for 循环”给每个。那么,我怎样才能从其他行中获取值呢?

for (int i=0; i<domains.size(); i++) {
domainprops = (String[]) domains.get(i);   
%>

<table cellspacing="0" cellpadding="10" border="0" class="tableview" width="100%">
<td width="150"><input type="text"  id="domains" name="domains" value="<%=domainprops[0]%>"></td>
<td width="160"><input type="text"  name="defaulturl" value="<%=domainprops[1]%>" size="30"></td>
<td width="160"><input type="text"  name="redirecturl" value="<%=domainprops[2]%>" size="30"></td>

<td width="160"> <input type="text" id="redirection" name="redirection"></td>

<td align="right"><a href="javascript:win2('recordUpdate.jsp?domains=<%=domainprops[0]%>
')">[Update]</a></td>

    </tr>
 </table>

<% } %>

Javascript代码:

function win2(urlPath) {
    var winl = (screen.width-200)/2;
    var wint = (screen.height-100)/2;
    var settings = 'height=100,width=200,directories=no,resizable=no,status=no,scrollbars=no,menubar=no,location=no,top=' + wint + ',left=' + winl;

    var changeurls=document.getElementById("redirection").value;
    urlPath+='&rdirect='+changeurls
    editWin.focus();
}
4

2 回答 2

3

DOM 中的 ID 应该是唯一的。如果 DOM 中的任何元素都有 ID,则它不应被任何其他元素共享。

我建议做的是将循环计数器附加到 ID 的末尾。这将确保您在 DOM 中创建的每个元素都有自己的唯一 ID。

for (int i=0; i<domains.size(); i++) {
domainprops = (String[]) domains.get(i);   

...
<input type="text" id="domains_<%= i %>" name="domains" value="<%=domainprops[0]%>">
...
<input type="text" id="redirection_<%= i %>" name="redirection"></td>



</tr>
</table>

}

接下来,将循环计数器传递给 win2 函数调用:

<td align="right"><a href="javascript:win2('recordUpdate.jsp?domains=<%=domainprops[0]%>
', <%= i %>)">[Update]</a></td>

最后,调整功能本身...

function win2(urlPath, loopID) {
...
    var changeurls=document.getElementById("redirection_" + loopID).value;
    urlPath+='&rdirect='+changeurls
...
}
于 2013-02-11T20:38:00.757 回答
2

编辑:请阅读有关具有相同 ID 的多个元素的答案。您不应该使用多个相同的 ID。

您可以使用 Javascript 来迭代重定向表单元素。

function loopThroughRedirection(form) {
    var result = "";

    for (var i = 0; i < form.elements.length; i++) {
        if (form.elements[i].name == 'redirection') {
            // Do something to retrieve the value of redirection
            result += form.elements[i].value
        }
    }

    return result;
}
于 2013-02-11T19:04:09.550 回答