Uncaught TypeError: Cannot read property 'length' of undefined:
例如:在treegrid的行编辑中,在执行了onAfterEdit()方法之后,会自动执行onLoadSuccess()方法,从服务器重新加载数据,如果服务器返回的数据为null,那么就会抛出这样一个错误,
源码为:
var isArray = $.array.likeArray(data) && !$.util.isString(data), rows = isArray ? data : data.rows; f (!rows.length) { return data; }//这句话抛出错误,此错误会导致不会执行onLoadSuccess()方法,即页面的原有的数据不会发生改变
Uncaught TypeError: Cannot read property 'id' of undefined"
错误2:
这个错误很可能的原因是:
--例如treegrid,异步加载树
代码:
$("#xmzj").treegrid("expand", id);//展开该节点 $("#xmzj").treegrid("scrollTo",index);//滚动到行标为index的记录 $("#xmzj").treegrid("select", id);//选择记录 //id节点在treegrid中本身是存在的,但是在当前树中由于是异步加载,可能并没有加载出来,那么在expand的时候并不会主动发送url请求,expand展开的原理是展开已经有的树节点,主动发送请求加载该节点下的子节点;如果该节点并没有实际存在,那么不会展开,scrollTo是滚动到索引为index的记录,如果该树实际已经存在该索引,那么则滚动到,如果不存在,也不会报错;但是第三句select,会根据id去该树几点寻找已经存在的id值的记录,如果存在,则选择;不存在,会报错,说id is undefined.所以说报id为定义的错误,肯定是某个地方用到这个id,但是根据这个id来操作的时候,发生了错误. 还有中可能:比如加载treegrid的数据的时候,返回过来的row中没有id属性,而treegrid中以idField:'id',即该treegrid以id来作为唯一标识,那么如果row中如果没有id属性存在,那么肯定会报Uncaught TypeError: Cannot read property 'id' of undefined" 错误,因为row中其他属性都可以没有,但是id属性必须存在.
Uncaught TypeError: Cannot read property 'nodeName' of undefined:
该错误很可能是利用利用jquery获取到某些元素之后,然后操作该元素的一些属性引起的,因为这些属性没有定义
例如:
/*在销毁编辑框的时候,第一个参数表示该treegrid控件,第二个表示一个object对象,如果该控件写错了, 比如应该要写成$("#xmzj")[0],但是写成了一个$("xmzj")[0],因为后面写错的得到了一个null的元素,那么进入_destroyCellEditor()函数在其中操作空元素来操作一些属性的时候就会报这个错误*/ _destroyCellEditor($(name)[0],{index:rowIndex,field:field});