日期:2014-05-16  浏览次数:20373 次

遇到一个js错误【无法获取属性length的值,为空或未定义】



     var ReportTable = $('#VisibleReportContentReportViewer1_ctl10');
     if (ReportTable.html().length > 0) {
     }   

VisibleReportContentReportViewer1_ctl10 是报表控件生成的客户端ID, 在IE9环境下运行if代码块就会提示无法获取length属性,更何况别的同时运行这个页面是没有问题的。 难道是vs的问题?

------解决方案--------------------
引用:
Quote: 引用:

对象不存在或者还未生成,调用html得到null,对null对用length当然报错
$(function(){
 var ReportTable = $('#VisibleReportContentReportViewer1_ctl10');
     if (ReportTable.html().length > 0) {
     }  
});


报错现象我的理解的,只是这几句代码是我们平时通用的模式,别的同事并没有遇到这个问题,而我遇到了,类似还有其他问题,我在考虑是不是我js环境或者别的环境有问题。多谢showbo指教。

一般判断是否存在是这样用的
if (ReportTable.length > 0) {

或者
if (ReportTable.length) {
}
这样肯定不会报错
------解决方案--------------------
引用:
Quote: 引用:

对象不存在或者还未生成,调用html得到null,对null对用length当然报错
$(function(){
 var ReportTable = $('#VisibleReportContentReportViewer1_ctl10');
     if (ReportTable.html().length > 0) {
     }  
});


报错现象我的理解的,只是这几句代码是我们平时通用的模式,别的同事并没有遇到这个问题,而我遇到了,类似还有其他问题,我在考虑是不是我js环境或者别的环境有问题。多谢showbo指教。


最好放到load事件中获取对象时最保险的,放到DOM对象下面,有些时候也会出错,可能和浏览器渲染有一定关系吧