在javascript中从anotehr脚本追加子项时如何传递变量?

在javascript中从anotehr脚本追加子项时如何传递变量?,javascript,Javascript,作为标题,我使用JS加载另一个JSfile, 它在新的JSfile中工作,但无法将var传递回去, 我将其设置为全局变量,但它的工作方式与局部变量类似 // index.html .js code function loadScript(url){ var script = document.createElement("script") script.type = "text/javascript"; script.src = url; document

作为标题,我使用JS加载另一个JSfile, 它在新的JSfile中工作,但无法将var传递回去, 我将其设置为全局变量,但它的工作方式与局部变量类似

// index.html .js code
function loadScript(url){
    var script = document.createElement("script")
        script.type = "text/javascript";
    script.src = url;
    document.getElementsByTagName("body")[0].appendChild(script);
}
loadScript("td01.js");
console.log("when run index: td01_var = " + td01_var);

控制台日志 ⓧ未捕获引用错误:未定义td01_变量(…)

运行td01.js时:td01_var=td01varValue


创建脚本元素,设置其源代码,并将其附加到文档中,使用加载代码异步加载脚本

您可以尝试将脚本上的加载事件侦听器设置为在加载脚本后继续

function loadScript(url, onLoad){
    var script = document.createElement("script")
    script.type = "text/javascript";
    script.onload = onLoad;
    script.src = url;
    document.getElementsByTagName("body")[0].appendChild(script);
}

function scriptLoaded() {
    console.log("after loading td01.js: td01_var = " + td01_var);
}

// Call loadScript with onLoad callback
loadScript("td01.js", scriptLoaded);
嗨,试试下面

// index.html .js code
function loadScript(url){
    var script = document.createElement("script")
        script.type = "text/javascript";
    script.src = url;
    document.getElementsByTagName("body")[0].appendChild(script);
}
loadScript("td01.js");

window.onload = function()
{
   console.log("when run index: td01_var = " + td01_var);
}
// this will wait till your js file gets load...

Traktor53所述,
loadScript
函数异步加载脚本。在调用加载var后,尝试从另一个文件访问var不会立即起作用,因为加载该文件的网络请求不完整

一些快速的谷歌搜索,但它仍然是一种有效的技术

这里有一个工作示例:

//请参见:https://www.nczonline.net/blog/2009/07/28/the-best-way-to-load-external-javascript/
函数装入脚本(url、回调){
var script=document.createElement(“脚本”)
script.type=“text/javascript”;
if(script.readyState){//IE
script.onreadystatechange=函数(){
如果(script.readyState==“已加载”||
script.readyState==“完成”){
script.onreadystatechange=null;
回调();
}
};
}其他{//其他
script.onload=函数(){
回调();
};
}
script.src=url;
document.getElementsByTagName(“head”)[0].appendChild(脚本);
}
//在这里使用cdn中的下划线,以便加载实际文件
//但是,任何有效的脚本URI都应该有效
变量url=”https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"
var onscriptload=function(){
console.log(“脚本加载的”,389;)
}
//调用加载脚本

loadScript(url,onScriptLoaded)
您没有显示您定义的位置
td01\u var
@JoyceBritneyXiang:您可以将其标记为正确的;-)
// index.html .js code
function loadScript(url){
    var script = document.createElement("script")
        script.type = "text/javascript";
    script.src = url;
    document.getElementsByTagName("body")[0].appendChild(script);
}
loadScript("td01.js");

window.onload = function()
{
   console.log("when run index: td01_var = " + td01_var);
}
// this will wait till your js file gets load...