Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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 动态添加脚本时未定义$/jQuery_Javascript_Jquery - Fatal编程技术网

Javascript 动态添加脚本时未定义$/jQuery

Javascript 动态添加脚本时未定义$/jQuery,javascript,jquery,Javascript,Jquery,我正在为不同的.js资源动态地添加标记到头部,但是我收到一个错误,提示没有定义jQuery 我知道jQuery实际上正在工作,因为流程后面的其他函数工作正常。下面是我用来将这些脚本动态添加到头中的代码。如您所见,我还将jQuery放在其他插件之前 document.addEventListener("DOMContentLoaded", AddExternals) function AddExternals(){ var jq = document.createElement("scr

我正在为不同的
.js
资源动态地添加
标记到头部,但是我收到一个错误,提示没有定义
jQuery

我知道jQuery实际上正在工作,因为流程后面的其他函数工作正常。下面是我用来将这些脚本动态添加到头中的代码。如您所见,我还将jQuery放在其他插件之前

document.addEventListener("DOMContentLoaded", AddExternals)

function AddExternals(){
    var jq = document.createElement("script");
    jq.type = "text/javascript";
    jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js";


    var t2e = document.createElement("script");
    t2e.type = "text/javascript";
    t2e.src = "/test/rfsystem/rfJavascript/table2excel.js";

    document.getElementsByTagName("head")[0].appendChild(jq);
    document.getElementsByTagName("head")[0].appendChild(t2e);

   console.log(jQuery);
}

在添加
脚本
标记后,您不能期望
脚本
已从网络中拉过来并嵌入到您的页面中。它将异步加载

您需要等待,或者可以在该
脚本上使用
.onload

Ex: 在附加onload事件之前,还应将脚本附加到DOM中,并且应在onload事件之后设置src属性:

    var jq = document.createElement("script");
    jq.type = "text/javascript";
    document.getElementsByTagName("head")[0].appendChild(jq);
    jq.onload = function() { console.log(jQuery); };
    jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js";

是的,因为一旦解析了文档,附加脚本将异步加载它。在将jQuery代码添加到DOM的函数完成运行之前,它肯定不会开始执行jQuery代码。JavaScript是单线程的。@Quentin你是什么意思?我不确定是否理解。@A.Wolff之前我键入了
onLoad
,应该是
onLoad
。昆汀是指给你听的,但我在这里说的是他的第一句话