Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从HTML调用脚本中的方法。该脚本在HTML中间接引用_Javascript_Jquery_Html - Fatal编程技术网

Javascript 从HTML调用脚本中的方法。该脚本在HTML中间接引用

Javascript 从HTML调用脚本中的方法。该脚本在HTML中间接引用,javascript,jquery,html,Javascript,Jquery,Html,我有一个html,它包含以下内容: <head><script src="script1.js"></script></head> <body><script>myFunc();</script></body> script2.js包含以下内容: function myFunc() { alert "Hi!"; } 我现在需要直接从html中引用script2.js中的这个方法。但我无法实

我有一个html,它包含以下内容:

<head><script src="script1.js"></script></head>
<body><script>myFunc();</script></body>
script2.js包含以下内容:

function myFunc() {
    alert "Hi!";
}
我现在需要直接从html中引用script2.js中的这个方法。但我无法实现同样的目标。我收到一个错误,说没有定义myFunc。(在Mozilla中调试)
有人能帮我吗?

在第一个JavaScript文件中尝试以下代码:

var jsfile = document.createElement("script");
jsfile.type = "text/javascript";
jsfile.src = TheFilePathOfSecondJsFile;
document.body.appendChild(jsfile);

我想你没有附加它。

首先要小心你的双引号:
document.createElement(“脚本”)=>
document.createElement(“脚本”)
js.type=”“text/javascript”“=>
js.type=“text/javascript”

然后在script1.js的末尾编写:

var js = document.createElement(""script""); js.type = ""text/javascript""; 
js.src = ""script2.js"";
document.body.appendChild( js );

你犯了不少错误:

  • 注意你的双引号
    (“脚本”)
    应该是
    (“脚本”)
    ,所有使用双引号的地方也应该是这样

  • 在myFunc()中,警报需要括号,在字符串
    “Hi!”
    周围放上括号,因此应该是:
    警报(“Hi!”)

  • 您需要将脚本标记添加到body:
    document.body.appendChild(js)

  • 因此,最终的代码应该更像:

    var js = document.createElement("script");
    js.src = "script2.js";
    document.body.appendChild(js);
    
    此外,在html中引用script2函数时,请将它们包装在以下代码中:

    window.js.onload = function(){
        // functions from script 2 go here
        myFunc();
    }
    
    这将在myscript2加载之前停止函数的运行

    以下是最终代码:

    <head><script src="myscript1.js"></script></head>
    <!-- myscript1.js
    
    window.js = document.createElement("script");
    js.src = "script2.js";
    document.body.appendChild(js);
    
    -->
    <body>
    <script>
    window.js.onload = function(){
        myFunc();
        /*
         * All your myscript2 functions can go here
         */
    }
    </script>
    </body>
    
    
    window.js.onload=函数(){
    myFunc();
    /*
    *所有myscript2函数都可以在这里使用
    */
    }
    
    为什么在
    script1.js
    中的字符串周围有两个双引号?明显的问题是字符串周围有双引号(
    “text/javascript”“
    ),但我猜这并不在代码中,是吗?
    <head><script src="myscript1.js"></script></head>
    <!-- myscript1.js
    
    window.js = document.createElement("script");
    js.src = "script2.js";
    document.body.appendChild(js);
    
    -->
    <body>
    <script>
    window.js.onload = function(){
        myFunc();
        /*
         * All your myscript2 functions can go here
         */
    }
    </script>
    </body>