在javascript中从anotehr脚本追加子项时如何传递变量?
作为标题,我使用JS加载另一个JSfile, 它在新的JSfile中工作,但无法将var传递回去, 我将其设置为全局变量,但它的工作方式与局部变量类似在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
// 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...