我有一个页面,它通过 php 分页到每页 100 个结果,每个页面旁边都有复选框。我有三个功能:一是全选,一是保存已检查的内容,一是恢复已检查的内容。
我不明白为什么我的切换功能不适用于其他两个。
如果我单击全选(执行toggle()),则不会保存选中的值;但是,如果我手动单击它们,它们确实会在分页中保存。
我假设我必须按照persistCheckBox(checkboxes[i].checked)到我的切换功能的最后一行做一些事情——我试过了,但它没有用;有人可以解释为什么吗?
function toggle(source) {
checkboxes = document.getElementsByName('multi_mag[]');
for (var i = 0, n = checkboxes.length; i < n; i++) {
checkboxes[i].checked = source.checked;
}
}
function restorePersistedCheckBoxes() {
var aStatus = getPersistedCheckStatus();
for (var i = 0; i < aStatus.length; i++) {
var aPair = aStatus[i].split(':');
var el = document.getElementById(aPair[0]);
if (el) {
el.checked = aPair[1] == '1';
}
}
}
function persistCheckBox(el) {
var found = false;
var currentStateFragment = el.id + ':' + (el.checked ? '1' : '0');
var aStatus = getPersistedCheckStatus();
for (var i = 0; i < aStatus.length; i++) {
var aPair = aStatus[i].split(':');
if (aPair[0] == el.id) {
// State for this checkbox was already present; replace it
aStatus[i] = currentStateFragment;
found = true;
break;
}
}
if (!found) {
// State for this checkbox wasn't present; add it
aStatus.push(currentStateFragment);
}
// Now that the array has our info stored, persist it
setPersistedCheckStatus(aStatus);
}