如何从jQuery脚本调用外部JS函数?

时间:2017-08-18 10:32:41

标签: javascript jquery

回到我使用 Node.js 的时候,我曾经使用$xmlFile = Get-Content "*.xml" $xmlFileMinusFormatData = $xmlFile[1..($xmlFile.Length - 1)] #we need to remove the first line $usableXml = [xml]$xmlFileMinusFormatData # Convert to xml for easy handling $usableXml.Courses.CourseEntry.Count # just a count of rows 来调用我的外部函数,其中fs.readFileSync(filename)是要加载的文件的名称

这可能很奇怪,但现在我正在使用jQuery,我有点迷失......

目前我正在收集 3 个不同的文件(一个是filename,另外两个是.html),以下是它们的外观:

以下是.js

test.html

以下是<body> <button id="submitting_button">Valider</button> <!--//////////////////////--> <!-- Loads jQuery library --> <script src="jQuery/jquery.js"></script> <!-- Loads my jQuery script --> <script src="jQuery/process.js"></script> </body>

process.js

最后,这里是$(document).ready(function(){ $('#submitting_button').click(function(){ $.getScript("./functions/my_function.js"); document.write(calculation()); }); });

my_function.js

所以,当我点击«Valider»按钮时,没有任何事情发生,除了Zone.js is an ambient dependency ......我猜这是因为使用console.log("NOTE : my_function.js has been reached"); function calculation(){ var result = 3+4; return result; } 不是一件好事,但我不喜欢不知道加载/读取外部函数的任何其他函数。

1 个答案:

答案 0 :(得分:1)

getScript()异步,因此下一行代码尝试在该操作完成之前执行。由于操作尚未完成,该功能确实尚未存在。

(请注意,在您的控制台中,错误发生在之前您已登录&#34; my_function.js已到达&#34;到控制台。)

不要在下一行代码上执行它,而是在回调getScript()中执行它:

$.getScript("./functions/my_function.js", function () {
    document.write(calculation());
});

这种方式在异步操作完成后调用。

旁注:document.write()可能会也可能不会在此处执行任何操作。老实说,我不确定文档中的哪个位置会在此处写入。最好远离document.write(),而是将值设置为HTML中的现有元素。类似的东西:

$('#output').text(calculation());

其中&#34;输出&#34;将是您想要写入值的某个元素的id

<span id="output"></span>