我正在尝试从弹出窗口收集复选框值,并使用以下代码将其值传递给父窗口:
<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脚本代码可以正常工作,否则会失败。
我试着改写我的问题,并希望我比以前更好地解释它。 任何帮助将不胜感激,提前谢谢。
答案 0 :(得分:0)
JS代码没有多大意义。 getElementById()
返回0或1个DOM元素:具有作为参数传递的ID的元素,并且该元素在整个文档中应该是唯一的。
您有几个复选框,并为每个复选框分配了相同的ID,这使您的HTML代码无效。由于您希望获取所有已选中复选框的值,因此需要对它们进行迭代。要找到它们,您可以use their name,因为它们都共享同一个。 在每次迭代中,您将确定是否选中了当前复选框,获取其value属性,并将其添加到数组中。然后,您可以将此数组传递给父窗口。