2013-02-11 44 views
1

我有一個窗體,顯示從4列的數據庫多行。從這些記錄中我需要在第4列中寫入一個新值並更新數據庫記錄。但每當我嘗試,只有第一行值可以更新/閱讀。但不是其他行!這可能是由於它從「for循環」中給出的每個「name = redirection」相同。那麼,我怎樣才能從其他行取得值?從循環中使用相同名稱屬性的HTML表單獲取價值

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(); 
} 

回答

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; 
} 
+0

@ winglerw28 ..謝謝。我使用數組,但它給了我「undefiend」的結果。我的代碼低於 var arr = new Array(); var obj =「」; arr = document.getElementsByName('redirection');對於(var i = 0; i >」+ obj.value); – 2013-02-11 19:53:38

+0

編輯:閱讀上面的答案我 - 我沒有意識到你正在使用多個同名的ID。 – winglerw28 2013-02-11 21:13:54

+0

@ winglerw28 ..謝謝隊友!你的想法引導我去解決問題,更容易理解我所做的錯誤......!歡呼聲, – 2013-02-11 21:36:21

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 
... 
} 
+0

@ user2062653 ...非常感謝..我想我非常接近答案。它確實向我展示了loopID ...但現在只有一個問題是..當我在重定向上鍵入新數據並單擊update時,它會顯示以下錯誤..「document.getElementByID(...)is null ..爲什麼它返回空值? – 2013-02-11 21:29:44

+0

嘿男人!!你解決了我的問題!!天才!!感謝很多!!乾杯... – 2013-02-11 21:35:02

相關問題