【问题标题】:Cannot call a function inside another function javascript无法在另一个函数javascript中调用函数
【发布时间】:2016-03-17 02:55:09
【问题描述】:
<script src="https://raw.githubusercontent.com/mckamey/countdownjs/master/countdown.js"></script>

<script> function getAge (date) { k = countdown(date); } </script>

它会抛出一个错误

倒计时未定义

更新

我将文件下载到本地,当我尝试直接调用它时它可以工作,但在函数内部时不起作用。

【问题讨论】:

  • 您确定页面中的所有内容都已加载吗?

标签: javascript countdownjs.js


【解决方案1】:

我没有得到“倒计时未定义”,我得到“日期未定义”。现在我有机会查看了countdown.js 文件,您并没有将所有参数都发送给函数:

function countdown(start, end, units, max, digits) {
    var callback;

    // ensure some units or use defaults
    units = +units || DEFAULTS;
    // max must be positive
    max = (max > 0) ? max : NaN;
    //…

首先,您需要定义“日期”或使用“新日期()”。其次,还有其他参数需要设置,包括要更新的回调和目标元素。我建议阅读文档here

这是自述文件中的示例:

var timerId =
  countdown(
    new Date(),
    function(ts) {
      document.getElementById('pageTimer').innerHTML = ts.toHTML("strong");
    },
    countdown.HOURS|countdown.MINUTES|countdown.SECONDS);

// later on this timer may be stopped
window.clearInterval(timerId);

最后,您实际上并没有在我能看到的任何地方调用 getAge 函数。您只定义了它。如果你运行:

getAge(new Date());

你不会得到任何错误,但它什么也不做,因为你还没有定义任何其他参数。

【讨论】:

  • 我知道了。但我仍然对没有参数感到好奇,它应该向我抛出与函数参数相关的错误,而不是函数不存在。
  • 很难说不看你是如何存储它的,因为它对我来说很好用。只要您的代码与此处显示的完全相同,它就不会为我抛出未定义函数的错误。
【解决方案2】:

这是因为 GitHub 提供的原始文件没有设置正确的 MIME 类型,因此出于安全原因浏览器不会下载它们。

相反,请使用一些可以使用正确 MIME 类型为其提供服务的替代慷慨主机。

我常用的是githack.com。要使用它,只需将URL中的githubusercontent更改为githack即可:

https://raw.githubusercontent.com/mckamey/countdownjs/master/countdown.js

【讨论】:

  • 不使用type="text/javascript"为你设置mime类型(OP没有设置这个)
  • @Rafee 你检查过你的控制台看文件是否正在加载吗?
猜你喜欢
  • 2011-08-08
  • 1970-01-01
  • 2014-01-12
  • 2015-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多