最近用到了beatpicker时间选择插件,但在使用中却遇到了一个问题,多次在其他页面切换时会出现“VM2358:1494 Uncaught ReferenceError: module is not defined”这个异常,测试组的同事说这个问题是在自己来回切换几个页面时出现的这个问题,我进行测试时确实会出现这个问题,后来找到产生这个异常根本无需在多个页面之间来回切换,只需在其中一个页面与我负责的页面之间切换下就会出现,到这里我特想推荐一本书:你以为你以为的就是你以为的吗
好了废话不多说,现在直入主题,问题的根本在于BeatPicker的原作者在设计这个插件的时候埋下了一个bug,这个bug的位置代码为:
_markToday: function (date) {
if (this.modules.today) {
date = date || this.currentDate;
this._todayNode && this._todayNode.removeClass(this.className._inner.todayInGrid).removeClass(this.className.todayBox);
for (var i in this._dateRows) {
//debugger;
/* if(this._dateRows[i].data==undefined){
debugger;
console.log("this._dateRows[i].data==undefined");
continue;
}*/
if (this._dateEqualsTo(this._dateRows[i].data("date"), date)) {
this._todayNode = this._dateRows[i];
$(this._dateRows[i]).addClass(this.className._inner.todayInGrid).addClass(this.className.todayBox);
}
}
}
}
看到我用黄色注释掉的部分了吧,作者使用for in这种方式来便利Array数组,这就是问题所在,如果其他地方使用Array.prototype的方式来创建了一个方法,那么这种便利就会在“this._dateRows[i].data("date")”处出现异常,所以可以修改便利数组的方式,或者打开我用黄色注释掉的部分
JavaScript也需要编码规范,有些使用方式会在未来的集成中可能引发bug
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有