用vs 2010调试,错误为:
行: 58
错误: 'this.el.dom' 为空或不是对象
跟了下。发现在ext-all.js里面,
这行代码有问题:
“B=this.el.dom.parentNode;”
ext js 版本为 2.2
为什么会有这个问题呢。如何解决啊!
由于代码太长,所以只选择了核心的帖出来。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ext.onReady(function(){
Ext.BLANK_IMAGE_URL = '../ext/resources/images/default/s.gif';
var treeLoader = new Ext.tree.TreeLoader({
id : treeLoader,
preloadChildren:true,
dataUrl : 's873J.do?operate=payRootNoteList',
baseParams : {'beginDate': beginDate, 'endDate' : endDate, 'group': group, 'isValid' : isValid, 'startQuery':startQuery},
//baseParams : {beginDate:Ext.getCmp("beginDate").getValue();, endDate:Ext.getCmp("endDate").getValue();},
//dataUrl : 'tree-data-manager.json',
uiProviders:{
'col': Ext.ux.ColumnTreeCheckNodeUI
}
});
var root = new Ext.tree.AsyncTreeNode();
var tree = new Ext.tree.ColumnTree({
el:'tree-ct',
autoWidth:true,
autoHeight:true,
rootVisible:false,
autoScroll:true,
expandable:false,
enableDD:true,
checkModel:'cascade',//级联多选,如果不需要checkbox,该属性去掉
onlyLeafCheckable: false,//所有节点可选
title: '佣金支付申请',
tbar : [text_beginDate_label, beginDate_company,text_endDate_label,endDate_company,
text_isValid_label, combox_isValid_company, btn_search_company,btn_commpay_company],
//text_group_label,contenttreecombo,
columns:[{
header:'代理商编码',
width:150,
dataIndex:'group_id'
},{
header:'代理商名称',
width:200,
dataIndex:'group_name'
},{
header:'佣金类型编码',
width:100,
dataIndex:'blnc_code'
},{
header:'佣金类型名称',
width:200,
dataIndex:'blnc_name'
},{
header:'佣金政策编码',
width:100,
dataIndex:'communit_code'
},{
header:'佣金政策名称',
width:150,
dataIndex:'communit_name'
},{
header:'账务月份',
width:100,
dataIndex:'balmonth'
},{
header:'佣金金额',
width:100,
dataIndex:'commvalue'
}],
loader: treeLoader,
root: root
});
tree.render();
//tree.expandAll();
//添加树上节点的单击事件
tree.on("click", function(node, event) {
if(node.leaf == true) {
// window.alert(node);
// window.alert(node.id);
// window.alert(node.attributes.depth);
// window.alert(node.getDepth());
// note.appendChild({id: 'aaa', group_id: 'dfdf', group_name: 'fsfsdfsd' , blnc_code: 'sewrwerwe', communit_code: '34234', communit_name:'13131',balmonth,'311',commvalue,'1313', uiProvider: 'col' });
} else {
}
});
//添加树上节点加载事件
tree.on("beforeload", function(treeLoader, node) {
//判断如果是加载节点,哪么就判断是否有根节点
return ;
}, this);
});
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<%@ page language="java" pageEncoding="utf-8"%>
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
代码逐句检查了下。发现是tree.render();
有问题,不知道何解!
[code="html"]
this.el.dom为空或不是对象,应该是this.el未获取成功。
你可以试试alert(document.body.innerHTML);看IE解析成什么样子了
另外,开发时建议不要使用ext-all,那是压缩版的
可以用ext-all-debug.js (或者ext-all-debug-w-comments.js)
同理于ext-base
再建议一下,使用好的IDE可以完全避免此类低级错误
IDE我用的是Eclipse + spket
你的代码里好像没有展开相关的逻辑,没发全吧?实在不好判断。
可以调试一下看是哪步没运行到,之前的问题你也定位到Ext.Component#render方法中了。
一般,Ext在firefox中没问题,在IE下也不会有问题,前提是不直接操作dom,不出现语法错误,都使用Ext提供的接口。