Javascript:从复选框获取对象

Javascript: get object from checkbox

本文关键字:获取 取对象 复选框 Javascript      更新时间:2023-09-26

假设有一个名为"Device"的模型类,它包含许多相关属性,有没有办法使用Javascript在复选框中获取"Device"对象?

如果我没有详细说明,这里是示例:

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

我试着调用total[j].value,它只返回了toString()函数的字符串,而不是"Device"对象。

我这样做的目的是,如果我不能获得整个"Device"对象,我需要通过复选框逐个获得每个属性,并将它们组装为Javascript中的"Device"。例如:

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

就我个人而言,我认为第二种方法不是一个好主意。因此,希望这里有人能给出更好的建议或任何想法来解决复选框中的pass-by-object。非常感谢!

您不能像以前那样通过Javascript传递Java Objects进行解释。您需要将对象转换为Java和JS这两种语言都能理解的符号。我使用的一种方法是将我的java对象转换为JSON,并在客户端使用javascript获取它。