1

データベースの複数の行を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>

<% } %>

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 に答える