【问题标题】:Can't call a function defined in external JS file无法调用外部 JS 文件中定义的函数
【发布时间】:2017-01-17 09:46:05
【问题描述】:

想尝试使用外部 JS 文件,但我似乎无法调用我在那里定义的函数。每次我尝试调用它时,都会返回一个错误“Uncaught ReferenceError: calculate (function name) is not defined”。我只写了一个星期的代码,所以试图自己找出错误让我无处可去。

代码块:

<head>
    <meta charset= "utf-8">
    <script type= "text/javascript" src= "nameOfFile.js"></script>
</head

尝试调用函数:

<select type= "select" id = "currency" onchange= "calculate()">
                        <option value= "RUB", selected> RUB </option>
                        <option value= "USD"> USD </option>
                        <option value= "EUR"> EUR </option>
                        <option value= "GBP"> GBP </option>

外部文件中的函数:

function calculate() {
 var currencyName = document.getElementById("currency");
 var currency = currencyName.value;
 var time = document.getElementById("timeInput");
 var sum = document.getElementById("sumInput");
 var amount = sum.value;
 var income; //pure percent revenue
 var earnings; //income + revenue
 var result = document.getElementById("results");
 var percentage;


 switch (currency) {
    case RUB:
        if (time>= 3 && time <= 5) {
            percentage = 5;
        }
        else if (time >= 6 && time <= 11){
            percentage = 6;
        }
        else if (time >= 12 && time <= 24){
            percentage = 6,5;
        }

     break;

    case USD:
        if (time>= 3 && time <= 5) {
            percentage = 0,1;
        }
        else if (time >= 6 && time <= 11){
            percentage = 0,5;
        }
        else if (time >= 12 && time <= 24){
            percentage = 1;
        }
    break;

    case EUR:
    case GBP:
        if (time>= 3 && time <= 5) {
            percentage = 0,1;
        }
        else if (time >= 6 && time <= 11){
            percentage = 0,25;
        }
        else if (time >= 12 && time <= 24){
            percentage = 0,5;
        }
    break;
 }

 income = percentage / 100 * amount;
 earnings = amount + income;

}

该页面似乎识别出 .js 文件的存在,例如,我可以在 Chrome 的“Sources”选项卡中看到它。两个文件都在同一个文件夹中。

编辑:问题已解决,请参阅我的回答。

【问题讨论】:

  • 你能添加整个.js文件吗?
  • 是完整的js文件还是还有更多?函数声明是嵌套在 somthing 中的吗?
  • html和js都在同一个文件夹里?
  • 尝试使用javascript:change()
  • @WasteD 有点尴尬,但在问题中为你添加了整个功能

标签: javascript function


【解决方案1】:

显然,问题是我不小心在外部 JS 文件中添加了一些 HTML 代码。

我注意到我在底部有段落(出于某种原因...),当我删除它们并将逗号固定为点时(感谢 Tristup 和 Thomas),一切都开始正常了。

【讨论】:

  • 有吗?因为那里还有一些错误:value= "RUB", selected 这里不应该是,,这些:case RUB: 应该是字符串case "RUB": 并且现在应该抛出错误,你的&lt;/head 标签没有正确关闭,而且我不知道您是否只是错过了复制结束 &lt;/select&gt;-tag,或者您的标记中是否缺少它。
  • 是的,我注意到所有这些乱七八糟的东西,在搜索问题时,修复了。
【解决方案2】:

您可以在 HTML 的底部或页脚部分加载脚本吗?可能是函数无法识别被调用的元素。

检查该文件是否正确包含。你可以写 alert("hi");在包含的文件的顶部。

如果您需要了解更多信息,请告诉我。

感谢和问候

【讨论】:

  • 请使用 try this case 'USD':
  • 请检查您的控制台是否有错误,该错误不会让您的函数加载。请修正“百分比 = 6,5;”应该是“百分比 = 6.5;” .为了精确起见,javascript 中不允许使用逗号“,”。
  • percentage = 6,5 是完全有效的 JS。但你是对的,它并没有达到他的意图/意思。
  • Thomas,刚刚尝试在 w3c 中查看,

    浮点运算并不总是 100% 准确。

  • 好像不行,你说的可能是百分比函数,就是这样指定精度数的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-05-06
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多