Javascript 从循环下具有相同名称属性的html表单获取值

Javascript 从循环下具有相同名称属性的html表单获取值,javascript,html,jsp,Javascript,Html,Jsp,我有一个表单,它显示数据库中的多行,共有4列。从这些记录中,我需要在第4列中写入一个新值并更新数据库记录。但每当我尝试时,只能更新/读取第一行值。但其他几行不行!!这可能是由于“for循环”中的每个“name=redirection”都是相同的。那么,我如何也从其他行获取值 for (int i=0; i<domains.size(); i++) { domainprops = (String[]) domains.get(i); %> <table cellspaci

我有一个表单,它显示数据库中的多行,共有4列。从这些记录中,我需要在第4列中写入一个新值并更新数据库记录。但每当我尝试时,只能更新/读取第一行值。但其他几行不行!!这可能是由于“for循环”中的每个“name=redirection”都是相同的。那么,我如何也从其他行获取值

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>

<% } %>

编辑:请阅读有关具有相同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;
}
函数环向(表单){
var结果=”;
对于(var i=0;i
编辑:请阅读答案,其中提到具有相同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;
}
函数环向(表单){
var结果=”;
对于(var i=0;i
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>

}

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>

}

@温格勒28。。谢谢我使用了数组,但它给我的结果是“未定义”。我的代码如下:var arr=new Array();var obj=“”;arr=document.getElementsByName(“重定向”);对于(var i=0;i>”+obj.value);编辑:阅读我上面的答案-我没有意识到你使用了多个同名的ID。@winglerw28。。谢谢你,伙计!!你的想法引导我找到了解决方案,更容易理解我制造的bug!!干杯,@winglerw28。。谢谢我使用了数组,但它给我的结果是“未定义”。我的代码如下:var arr=new Array();var obj=“”;arr=document.getElementsByName(“重定向”);对于(var i=0;i>”+obj.value);编辑:阅读我上面的答案-我没有意识到你使用了多个同名的ID。@winglerw28。。谢谢你,伙计!!你的想法引导我找到了解决方案,更容易理解我制造的bug!!干杯,@user2062653。。。谢谢。。我想我很接近答案。它确实给我看了loopID。。。但现在唯一的问题是。。当我在重定向时键入新数据并单击更新。。它向我展示了以下错误。。“document.getElementByID(…)为空..为什么它返回空值???@user2062653…非常感谢..我想我非常接近答案。它确实显示了loopID…但现在唯一的问题是..当我在重定向时键入新数据并单击更新..它会显示以下错误..”document.getElementByID(…)为空..”。。为什么返回空值??
function win2(urlPath, loopID) {
...
    var changeurls=document.getElementById("redirection_" + loopID).value;
    urlPath+='&rdirect='+changeurls
...
}