【问题标题】:Calling a function from one JavaScript file which requires another从一个 JavaScript 文件调用需要另一个文件的函数
【发布时间】:2013-07-05 04:33:10
【问题描述】:

我正在尝试从另一个 JavaScript 文件调用在一个 JavaScript 文件中编写的函数。我有以下代码,但它不起作用:

我的 HTML 文件

<script type="text/javascript" src="js1.js"></script>
<script type="text/javascript" src="js2.js"></script>
<script language="javascript">
    js1();
</script>

js1.js

function js1()
{
    alert("Hello from js1");
    js2();
}

js2.js

function js2() 
{
    alert("Hello from js2");
}

我能做什么?

【问题讨论】:

  • 是的,您绝对可以,但是您必须确保以正确的顺序包含文件,以便在您尝试调用函数之前,函数代码已经加载到您的文档中。
  • 根据以上顺序,可以在js2或者页面中调用js1函数。
  • 这是您的整个 HTML 文件吗?如果是,它是否与 JavaScript 文件位于同一文件夹中?
  • script language 属性已弃用。使用 type 或省略两者(在 HTML5 中有效)。见stackoverflow.com/questions/2267476/…
  • 我认为浏览器只是想解释

标签: javascript html


【解决方案1】:

尝试更改顺序

<script type="text/javascript" src="js2.js"></script>
<script type="text/javascript" src="js1.js"></script>
<script language="javascript">
   js1();
</script>

因为你在js1.js里面调用了js2();,所以脚本js2.js应该先执行。

在您的情况下,我认为它应该仍然可以在不更改这样的订单的情况下工作,因为您在函数内调用 js2();。执行此脚本时:

function js1()
{
   alert("Hello from js1");
   js2();
}

即使js2.js 还没有执行,但你不此时实际上调用了js2();。

试试看是否有效。

【讨论】:

  • “因为你在函数内部调用了 js2();”不是充分条件。相反,“...在fn2 之后运行的函数被定义
  • @Jan Dvorak:我更新了我的答案。我想问题中没有显示 OP 的代码还有另一个问题。
  • 是的。如果文件被加载,asker 的代码应该可以正常工作。据我所知,您的建议无济于事。
  • @Jan Dvorak:你说得对,我只是建议他考虑脚本执行的顺序。在这种情况下,此建议可能无济于事。但总的来说,他应该关心它。
【解决方案2】:

我假设这是您的整个 HTML 页面。

为了让这些脚本运行,您需要将这些 JavaScript 文件与您的网页放在同一文件夹中,并且实际上要有一个正确的 HTML 页面!

在您的 HTML 页面中,您需要在头部或正文中包含对 js1 和 js2 文件的引用,并将您在 HTML 页面本身中编写的脚本包含在正文中,以便它在何时执行它已加载:

<!DOCTYPE html>
<!-- ^ Declaring this DOCTYPE means this is a HTML5 page. -->
<html>
    <head>
        <!-- This will load your scripts into the document. -->
        <script src="js1.js"></script>
        <script src="js2.js"></script>
        <!--
            In a HTML5 page, you don't need to include the
            'type="text/javascript"' attribute on script tags.
            They're treated as having that by default, unless you say otherwise.
        -->
    </head>
    <body>
        <!--
            You could also include your scripts here, but I'll
            just leave these commented out since they're already included.
        <script src="js1.js"></script>
        <script src="js2.js"></script>
        -->
        <script>
        js1();
        </script>
        <!--
            You don't need 'language="javascript"' on a script tag.
            Use the type attribute, or nothing in a HTML5 page.
        -->
    </body>
</html>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-16
    • 2017-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多