我正在尝试从弹出窗口收集复选框值,并使用此代码将其值传递给父窗口:
<c:forEach var="row" items="${result2.rows}">
<input type="checkbox" name="chkBox" id="cb1" value="${row.first_name} ${row.last_name}" />
<c:out value="${row.first_name} ${row.last_name}"/><br>
</c:forEach>
<input type="button" value="select" onclick="javascript:return returnValues()" />
此JSTL代码运行良好,并显示复选框和名称,即使结果包含许多行。
选择复选框后,我通过此Java脚本代码将其值传递给父窗口:
function returnValues() {
if(document.getElementById("cb1").checked){
var v1 =[];
v1 =document.getElementById("cb1").value
}
window.opener.setValue(v1);
window.close();
return false;
}
当返回的结果仅包含一行否则失败时,此Java脚本代码可以完美地工作。
我试图重写我的问题,并希望我比以前更好地解释它。任何帮助将不胜感激,谢谢。
JS代码没有多大意义。getElementById()
返回0或1 DOM元素:ID作为参数传递的元素,并且在整个文档中应该是唯一的。
您有几个复选框,并为每个复选框分配了相同的ID,这使您的HTML代码无效。由于您想获取所有检查复选框的值,因此需要迭代它们。要找到它们,您可以使用他们的名字,因为它们都共享相同的名称。在每次迭代中,您将确定是否检查了当前的复选框,获取其值属性,然后将其添加到数组中。然后,您可以将此数组传递到您的父窗口。