function batchdel() {//批量删除
var chk_value =[];
$('input[name="ids"]:checked').each(function(){ //获取已选中的学号
chk_value.push($(this).val());
});
if (chk_value.length==0) {
alert("请选择学号!");
return false;
}
if (chk_value.length > 0) {
var msg = '确认删除' + chk_value + '吗?';
if (confirm(msg) == true) {
location.href = "<%=basePath%>user/batchDelete?chk_value=" + chk_value;
return true;
} else {
return false;
}
}
}
var checkedIds=""; //翻页保存选中的id
/**
* 记录选择的元素
* @return
*/
function changeIds(){
var oneches=document.getElementsByName("ids");
for(var i=0;i<oneches.length;i++){
if(oneches[i].checked==true){
//避免重复添加(若存在元素时,不添加)
if(!contains(checkedIds,oneches[i].value)){
checkedIds+=oneches[i].value+",";
//console.log(oneches[i].value);
}
}
if(oneches[i].checked==false){
//取消复选框时 含有该id时将id从全局变量中去除
if(contains(checkedIds,oneches[i].value)){
checkedIds=checkedIds.replace((oneches[i].value+","),"");
}
}
}
}
/**
*
* @return
*/
function getChecked(){
if(checkedIds==""){
return;
}
var oneches=document.getElementsByName("ids");
for(var i=0;i<oneches.length;i++){
//全局变量中含有id,则该复选框选中
if(contains(checkedIds,oneches[i].value)){
oneches[i].checked="checked";
//console.log(oneches[i].value);
}
}
}
/**
* 判断数组是否存在元素
* @param obj
* @param ele
* @return
*/
function contains(obj, ele) {
//console.log(obj);
//console.log(ele);
if(obj==""){
return;
}
/*若参数obj为字符串时,需要转换成数组*/
var arr = obj.split(",");
//console.log(arr);
var i = arr.length;
while (i--) {
if (arr[i] == ele) {
return true;
}
}
return false;
}
function handleClick(){
changeIds();
getChecked();
contains('1','2');
}
不报错,控制台有输出,没实现效果
----猜测原因, 并修改答案
翻页之后
你调用了handleClick函数。
翻页之后,复选框全部都为未勾选状态
handleClick函数执行changeIds函数
程序走入oneches[i].checked==false的条件 所以将你的checkedIds循环replace为空字符串
由于for循环阻塞机制,所以执行完循环之后才会执行getChecked()
但是这时的checkedIds 已经为空字符串。
所以,你的input事件应该只调用changeIds函数
翻页之后调用getChecked函数