前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >beatPicker使用出现Uncaught ReferenceError: module is not defined

beatPicker使用出现Uncaught ReferenceError: module is not defined

作者头像
johnhuster的分享
发布于 2022-03-28 05:58:59
发布于 2022-03-28 05:58:59
96400
代码可运行
举报
文章被收录于专栏:johnhusterjohnhuster
运行总次数:0
代码可运行

最近用到了beatpicker时间选择插件,但在使用中却遇到了一个问题,多次在其他页面切换时会出现“VM2358:1494 Uncaught ReferenceError: module is not defined”这个异常,测试组的同事说这个问题是在自己来回切换几个页面时出现的这个问题,我进行测试时确实会出现这个问题,后来找到产生这个异常根本无需在多个页面之间来回切换,只需在其中一个页面与我负责的页面之间切换下就会出现,到这里我特想推荐一本书:你以为你以为的就是你以为的吗

好了废话不多说,现在直入主题,问题的根本在于BeatPicker的原作者在设计这个插件的时候埋下了一个bug,这个bug的位置代码为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
_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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/11/09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验