2013-02-22 138 views
0

假設有一個名爲「設備」的模型類,它包含許多相關的屬性,有什麼辦法通過使用Javascript獲取複選框中的「設備」對象?Javascript:從複選框中獲取對象

如果我沒有明確闡述,這裏是樣本:

JSP頁面:

<c:forEach var="device" items="${row.deviceList}"> 
    <input type="checkbox" name="deviceDetails" value="${device}"> 
    <c:out value="${device.equipNo}" /> 
</c:forEach> 

的Javascript:

var total = document.getElementsByName("deviceDetails"); 
// run through all element of checkedbox named deviceDetails 
for(j=0; j<total.length; j++) 
{ 
    <!-- get instance Device object ? --> 
    alert(total[j].value); 
} 

我試圖打電話給總[J]。值只返回了toString()函數的字符串,而不是「Device」對象。

我這樣做的目的是因爲如果我無法獲得整個「設備」對象,我需要通過複選框逐個獲取每個屬性,並將它們組裝爲Javascript中的「設備」對象。如:

JSP頁面:

<c:forEach var="device" items="${row.deviceList}"> 
    <input type="checkbox" name="id" value="${device.stnID}"> 
    <c:out value="${device.stnID}" /> 
    <input type="checkbox" name="stnName" value="${device.stnName}"> 
    <c:out value="${device.stnName}" /> 
    <input type="checkbox" name="equipNo" value="${device.equipNo}"> 
    <c:out value="${device.equipNo}" /> 
</c:forEach> 

的Javascript:

var allID = document.getElementsByName("id"); 
var allName = document.getElementsByName("stnName"); 
var allNo = document.getElementsByName("equipNo"); 

var deviceList = new Array(); 
var device = new Object(); 

for(i=0; i<allID.length; i++) 
{ 
    device.id = allID[i].value; 
    device.stnName = allName[i].value; 
    device.equipNo = allNo[i].value; 

    deviceList.push(device); 
} 

就個人而言,我不認爲第二種方法是一個好主意。因此,希望這裏的某個人能給出更好的建議或任何想法來解決複選框中的傳遞對象。非常感謝!

回答

0

你不能像你那樣通過Java Objects來解釋Javascript。您需要將對象轉換爲Java和JS這兩種語言都可以理解的符號。我用這樣做的一種方式是將我的java對象轉換爲JSON,並通過客戶端使用javascript獲取它。

+0

謝謝,傑弗遜。我設法使用JSON來完成,我發現它在前端JSP和後端servlet之間進行通信非常有用。順便說一句,我使用前端JSP的默認JSON2.js和後端Java Servlet的Gson。他們工作很棒! – ShadowScorpion 2013-03-05 02:14:25