我有一个适用于Chrome,Firefox和IE 11的javascript功能,但不适用于我的客户使用的IE 8。
function ToggleSelectAll(this_id) {
var chk = document.getElementById(this_id).childNodes[0];
var lblID = "lblSelectAll" + chk.id.slice(-1);
var lbl = document.getElementById(lblID);
var items = $(lbl).closest('div.segment_container')[0].childNodes;
if (document.getElementById(chk.id).checked == false) {
lbl.innerHTML = "Select All";
for (i = 0; i < items.length; i++) {
if (items[i].className == "checkbox") {
var bx = $(items[i]).children()[0];
bx.checked = false;
var label = $(items[i]).children()[1];
label.style.background = '#CCC';
}
}
}
else {
lbl.innerHTML = "Clear All";
for (i = 0; i < items.length; i++) {
if (items[i].className == "checkbox") {
var bx = $(items[i]).children()[0];
bx.checked = true;
var label = $(items[i]).children()[1];
label.style.background = '#C1ECFA';
}
}
}
};
该功能通过onclick运行。 chk是div中的一个复选框,选中后,选中/取消选择父容器中的所有复选框。我尝试用.children和.firstElementChild替换.childnodes,但它没有帮助。通过调试器,我可以看到chk,lblID和lbl的值在IE中与在Chrome中相同
修改
以下是jsfiddle及其相关的html:http://jsfiddle.net/zNEyb/1/