做了一个带复选框的三级树,选择了父节点时自动选择所有的子节点,并且展开所有的子节点。现在的问题是,在IE7、IE8、火狐、谷歌浏览器都没有问题,但是在IE6下面有问题,表现如下:1、在所有节点收起来的时候,选择了第一级节点之后,所有节点均顺利展开,第二级节点选中了,但是第三级节点没有选中。2、所有节点展开之后,再次选中第一级节点,所有节点选中,但是收起第一级节点再展开发现之前选中的二三级节点均变为未选择了。代码如下: var school = new Ext.tree.TreePanel({
border : false,
autoScroll:true,
root : new Ext.tree.AsyncTreeNode({
id:"root",
text : '组织机构',
checked : false,
expanded : true//默认展开根节点
}),
hrefTarget : 'mainIframe',
loader: new Ext.tree.TreeLoader({
dataUrl:"/CIIP/roleManageAction!showSchool.action?roleID="+id // 获取树节点的地址
}),
bbar:schTbar,
listeners : {
'render':function(){this.bbar.dom.align='center';}
}
}); school.on('checkchange',function(node,checked){
selChild(node,checked);
},school);
function selChild(node,checkFlag){
//checked?node.expand():node.collapse();
if (!node.leaf) {
node.expand();
if(node.hasChildNodes()){
node.attributes.checked=checkFlag;
node.eachChild(function(child) {
child.attributes.checked = checkFlag;
var cb = child.ui.checkbox;
if(cb) cb.checked = checkFlag;
selChild(child,checkFlag);
});
}
}
}
border : false,
autoScroll:true,
root : new Ext.tree.AsyncTreeNode({
id:"root",
text : '组织机构',
checked : false,
expanded : true//默认展开根节点
}),
hrefTarget : 'mainIframe',
loader: new Ext.tree.TreeLoader({
dataUrl:"/CIIP/roleManageAction!showSchool.action?roleID="+id // 获取树节点的地址
}),
bbar:schTbar,
listeners : {
'render':function(){this.bbar.dom.align='center';}
}
}); school.on('checkchange',function(node,checked){
selChild(node,checked);
},school);
function selChild(node,checkFlag){
//checked?node.expand():node.collapse();
if (!node.leaf) {
node.expand();
if(node.hasChildNodes()){
node.attributes.checked=checkFlag;
node.eachChild(function(child) {
child.attributes.checked = checkFlag;
var cb = child.ui.checkbox;
if(cb) cb.checked = checkFlag;
selChild(child,checkFlag);
});
}
}
}
还是问题放错地方了?
还是上csdn的人少了?
还有EXTJS 不同的版本,也可能是不同的实现过程。所以你遇到的问题别人未必遇到。。
只有自己尝试去找原因,找问题的根本。