<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
<script type="text/javascript">
function fy(){
//定位到inputID所对应的元素
var inputElement = document.getElementById("inputID");
var currPageNO = inputElement.value;
var url = "/day15/CrmServlet?method=findAllCustomer&currPageNO="+currPageNO;
window.location.href = url;
}
function deleteAll(){
//定位到tableID所对应的元素,即<table>标签
var tableElement = document.getElementById("tableID");
var size = tableElement.rows.length;//size=5
//装ID号的数组
var ids = "";
for(var i=1;i<=size-2;i++){
//取得每行的1列中的checkbox元素
var checkboxElement = tableElement.rows(i).cells(0).firstChild;
//如果该复选框被选中
if(checkboxElement.checked){
//收集该复选框的ID值
ids += checkboxElement.value + "_";
}
}
/* var url = "/day15/CrmServlet?method=deleteCustomerById&ids="+ids;
window.location.href = url;*/
}
</script>
<table id="tableID" border="1" align="center" width="80%">
<caption><h1>客户信息</h1></caption>
<tr>
<th>状态</th>
<th>姓名</th>
<th>性别</th>
<th>地址</th>
<th>电话</th>
<th>邮箱</th>
<th>生日</th>
</tr>
<c:forEach var="customer" items="${page.listCustomer}">
<tr>
<td>
<input type="checkbox" value="${customer.id}"/>
</td>
<td>${customer.name}</td>
<td>${customer.gender}</td>
<td>${customer.address}</td>
<td>${customer.tel}</td>
<td>${customer.email}</td>
<td>${customer.birthday}</td>
<td>
<a href="/day15/CrmServlet?method=findCustomerById&id=${customer.id}" style="text-decoration:none">[编辑]</a>
</td>
</tr>
</c:forEach>
<tr>
<td colspan="7" align="center">
<input type="button" value="删除" onclick="deleteAll()"/>
<input id="inputID" type="text" size="1" name="currPageNO"/>
<input type="button" value="GO" onclick="fy()"/>
</td>
</tr>
</table>
</body>
</html>
5 个解决方案
#1
取数组项目用[],不要用(),非ie浏览器报错。firstChild在标准浏览器下空白也算一个节点,改成下面的
function deleteAll() {
//定位到tableID所对应的元素,即<table>标签
var tableElement = document.getElementById("tableID");
var cbs = tableElement.getElementsByTagName('input');
var ids = "";
for (var i = 0; i <cbs.length; i++) {
if (cbs[i].type=='checkbox'&&cbs[i].checked) {
ids += cbs[i].value + "_";
}
}
alert(ids)
/* var url = "/day15/CrmServlet?method=deleteCustomerById&ids="+ids;
window.location.href = url;*/
}
#2
嗯现在能取到值了,但是到了循环外又不能取值了,点击没反应,好像是没大执行到循环体外一样。
#3
现在可以了,但是我想问下,之前我用[ ]代替()也不行,还有就是你说的空格是是指一个td符号之间所有的空格符吗?对于js是很不懂
#4
换行也是一个节点(空白的)
要去掉firstChild才是input元素,否则是那个换行节点
<td><input type="checkbox" value="${customer.id}"/>
</td>
你之前代码应该是firstChild的问题,不是()导致的,除非你用的非ie浏览器
#5
对的,我把td两边的空格全去了之后,就可以了,感谢了,网上找了一天,竟然是这里有问题。
#1
取数组项目用[],不要用(),非ie浏览器报错。firstChild在标准浏览器下空白也算一个节点,改成下面的
function deleteAll() {
//定位到tableID所对应的元素,即<table>标签
var tableElement = document.getElementById("tableID");
var cbs = tableElement.getElementsByTagName('input');
var ids = "";
for (var i = 0; i <cbs.length; i++) {
if (cbs[i].type=='checkbox'&&cbs[i].checked) {
ids += cbs[i].value + "_";
}
}
alert(ids)
/* var url = "/day15/CrmServlet?method=deleteCustomerById&ids="+ids;
window.location.href = url;*/
}
#2
嗯现在能取到值了,但是到了循环外又不能取值了,点击没反应,好像是没大执行到循环体外一样。
#3
现在可以了,但是我想问下,之前我用[ ]代替()也不行,还有就是你说的空格是是指一个td符号之间所有的空格符吗?对于js是很不懂
#4
现在可以了,但是我想问下,之前我用[ ]代替()也不行,还有就是你说的空格是是指一个td符号之间所有的空格符吗?对于js是很不懂
换行也是一个节点(空白的)
要去掉firstChild才是input元素,否则是那个换行节点
<td><input type="checkbox" value="${customer.id}"/>
</td>
你之前代码应该是firstChild的问题,不是()导致的,除非你用的非ie浏览器
#5
现在可以了,但是我想问下,之前我用[ ]代替()也不行,还有就是你说的空格是是指一个td符号之间所有的空格符吗?对于js是很不懂
换行也是一个节点(空白的)
要去掉firstChild才是input元素,否则是那个换行节点
<td><input type="checkbox" value="${customer.id}"/>
</td>
你之前代码应该是firstChild的问题,不是()导致的,除非你用的非ie浏览器
对的,我把td两边的空格全去了之后,就可以了,感谢了,网上找了一天,竟然是这里有问题。