【问题标题】:TypeError: t is undefined类型错误:t 未定义
【发布时间】:2019-01-07 08:13:11
【问题描述】:

我决定下载所有外部 CSS 和 JavaScript 文件,而不是依赖 CDN。然而,在我这样做之后,我遇到了 daterangepicker.js 插件的以下错误:

TypeError: t 未定义

我研究了这个错误,我遇到的所有问题都表明 moment.js 要么根本没有被引用,要么在 daterangepicker.js 文件之后被引用。但是,我的脚本是这样定义的:

<script src="js/jquery.min.js"></script>
<script src="js/popper.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/jquery.circliful.min.js"></script>
<script src="js/loader.js"></script>
<script src="js/moment.js"></script>
<script src="js/jquery.daterangepicker.min.js"></script>

我还确保没有以下屏幕截图所示的拼写错误:

我还直接从源网站下载 JavaScript 文件,而不是从托管在某处的 CDN:

我不明白是什么导致了这个问题,我完全不知道如何解决这个问题。更令人沮丧的是,如果我尝试像以前一样切换回使用 CDN,错误仍然存​​在。

更新

应Tyler Roper的要求,下面是相关的JS代码:

// Setup the Agency Report date-picker
$('#date_range').dateRangePicker({
autoClose: true,
format: 'MMMM Do YYYY',
showShortcuts: true,
customShortcuts: [
{
  name: 'this week',
  dates : function() {
    var start = moment().day(0).toDate();
    var end = moment().day(6).toDate();
    return [start,end];
  }
},
{
  name: 'this month',
  dates : function() {
    var start = moment().startOf('month').toDate();
    var end = moment().endOf('month').toDate();
    return [start,end];
  }
},
{
  name: 'this year',
  dates : function() {
    var start = moment().startOf('year').toDate();
    var end = moment().endOf('year').toDate();
    return [start,end];
  }
}]
}).data('dateRangePicker').setDateRange(moment().startOf('year').toDate(), moment().toDate());

【问题讨论】:

  • “更令人沮丧的是,如果我像以前一样尝试切换回使用 CDN,错误仍然存​​在。” - 这会让我相信问题出在'与您的包含无关,但很难确定。您是否将文件包含在头部或正文中?您能否发布相关的 JS 代码并让我们知道您将其包含在哪里?
  • @TylerRoper - 我觉得很愚蠢......我更改了 dateRangePicker 引用的 ID 的值,却忘记在 JS 代码中反映该更改。我希望这个错误更相关。
  • 那么这是否解决了您的问题?几个小时前,我已经把头撞在桌子上,结果发现输入问题或向同事解释问题会在几秒钟内得到(有时是显而易见的)答案。所以不用担心 - 它肯定发生在我们每个人身上!
  • 是的,这就是修复它的原因。我刚刚花了大约 3 个小时试图找出这个问题,只是因为它是一个错字。
  • 编码不是很好吗?其中许多插件让这些情况陷入困境,直到它们最终吐出一个错误,而且经常炸毁的实际线路如此之深,以至于错误几乎毫无用处。很高兴你解决了 - 祝你好运!

标签: jquery daterangepicker


【解决方案1】:

通常当您在控制台中收到 TypeError: t is undefined 错误时,这是​​因为脚本无法处理它尝试根据您的目标输入字段创建的一个或多个变量。

大多数情况下,这是由于定位不正确的元素(即定位父容器而不是实际输入)。正如 OP 在他们的 cmets 中提到的那样,他们已经切换了元素 ID,并且没有在代码中反映出来。

我个人遇到过不小心将输入字段的父 div 而非输入字段直接作为目标的问题。

【讨论】:

    【解决方案2】:

    尝试检查加载 jquery 的 url,在浏览器中打开项目并按 control + U 或在鼠标中按 right button,然后选择选项 view page source

    将打开一个新的浏览器表,其 url 类似于:view-source:yout-website-here

    现在点击链接加载你的jquery

    修正

    如果你使用作曲家(经理),你可以在require中更改属性值,在终端使用命令后:composer update

    【讨论】:

    • 我对此投了反对票,因为很明显你没有费心去阅读 cmets。此问题已在近 2 年前解决。
    猜你喜欢
    • 1970-01-01
    • 2019-10-31
    • 2016-08-07
    • 2020-01-28
    • 2021-10-24
    • 2014-10-17
    • 2022-01-10
    • 2019-12-24
    • 2020-02-27
    相关资源
    最近更新 更多