checkbox全选有关问题
checkbox全选问题
为什么将子checkbox全部勾选上以后全选的checkbox没反应?代码如下:
<script type="text/javascript">
function selectAll(flag){
var items = document.getElementsByName("checkbox");
if (null != items){
for (var i = 0;i<items.length;i++) {
items[i].checked=flag;
}
}
}
function changeCheck(){
var checkAll = document.getElementByName("checkbox1");
var items = document.getElementsByName("checkbox");
if (null != items){
if (checkAll.checked){
for (var i = 0;i<items.length;i++){
if(!items[i].checked){
checkAll.checked= false;
}
}
}else{
checkAll.checked = true;
}
}
}
</script>
<table align="center" border="2">
<tr>
<th align="center"><input type="checkbox" name="checkbox1" onclick="selectAll(this.checked)"/>全选</th>
<%
for(int i=0;i<list.size();i++){
ModelDynaBean bean = list.get(i);
%>
<tr>
<td align="center"><input type="checkbox" name="checkbox" value="<%=bean.get("id") %>" onclick="changeCheck()"/><%=(i+1)+(currentPage-1)*3 %></td>
</tr>
------解决思路----------------------
这个代码是错的,没有getElementByName方法,因为name可能重复,所以只有getElementsByName
取出来的是一个dom集合。
所以这里要写成:
------解决思路----------------------
getElementsByName 取到的是一个集合 可以用楼上的写法 也可以给这个checkbox加id
还有楼主js逻辑有错
为什么将子checkbox全部勾选上以后全选的checkbox没反应?代码如下:
<script type="text/javascript">
function selectAll(flag){
var items = document.getElementsByName("checkbox");
if (null != items){
for (var i = 0;i<items.length;i++) {
items[i].checked=flag;
}
}
}
function changeCheck(){
var checkAll = document.getElementByName("checkbox1");
var items = document.getElementsByName("checkbox");
if (null != items){
if (checkAll.checked){
for (var i = 0;i<items.length;i++){
if(!items[i].checked){
checkAll.checked= false;
}
}
}else{
checkAll.checked = true;
}
}
}
</script>
<table align="center" border="2">
<tr>
<th align="center"><input type="checkbox" name="checkbox1" onclick="selectAll(this.checked)"/>全选</th>
<%
for(int i=0;i<list.size();i++){
ModelDynaBean bean = list.get(i);
%>
<tr>
<td align="center"><input type="checkbox" name="checkbox" value="<%=bean.get("id") %>" onclick="changeCheck()"/><%=(i+1)+(currentPage-1)*3 %></td>
</tr>
------解决思路----------------------
var checkAll = document.getElementByName("checkbox1");
这个代码是错的,没有getElementByName方法,因为name可能重复,所以只有getElementsByName
取出来的是一个dom集合。
所以这里要写成:
var checkAll = document.getElementsByName("checkbox1")[0];
------解决思路----------------------
getElementsByName 取到的是一个集合 可以用楼上的写法 也可以给这个checkbox加id
还有楼主js逻辑有错
<th align="center"><input type="checkbox" name="checkbox1" id="checkbox1" onclick="selectAll(this.checked)"/>全选</th>
function changeCheck(){
var checkAll = document.getElementById("checkbox1");
var items = document.getElementsByName("checkbox");
var temp = true;
if (null != items){
for (var i = 0;i<items.length;i++){
if(!items[i].checked){
temp= false;
break;
}
}
checkAll.checked = temp;
}
}