Javascript 将jquery插入js文件

Javascript 将jquery插入js文件,javascript,jquery,Javascript,Jquery,我有一个js文件,我想在其中包含jquery。为了包含jquery脚本,我使用以下clode: var script = document.createElement('script'); script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js'; script.type = 'text/javascript'; document.getElementsByTa

我有一个js文件,我想在其中包含jquery。为了包含jquery脚本,我使用以下clode:

    var script = document.createElement('script');
    script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js';
    script.type = 'text/javascript';
    document.getElementsByTagName('head')[0].appendChild(script);
这是可行的,我可以看出脚本是正确的。我的检查器显示它加载了脚本,但jquery无法工作


有什么想法吗?

您需要在HTML代码中包含jQuery。jQuery不适用于您,因为您的脚本是在加载jQuery之前加载的。

在尝试使用它之前,您需要确保动态加载的脚本已实际加载

为此,使用
script.onload
在加载完成后启动回调

var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head') [0].appendChild(script);
script.onload = function () {
  /* jquery dependent code here */
  console.log($);
};
有一个更适合您指定的回调的示例-

// from https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement#Dynamically_importing_scripts
function loadError (oError) {
  throw new URIError("The script " + oError.target.src + " is not accessible.");
}

function importScript (sSrc, fOnload) {
  var oScript = document.createElement("script");
  oScript.type = "text\/javascript";
  oScript.onerror = loadError;
  if (fOnload) { oScript.onload = fOnload; }
  document.currentScript.parentNode.insertBefore(oScript, document.currentScript);
  oScript.src = sSrc;
}  

您的jQuery代码不工作可能是由于浏览器执行jQuery代码时未加载jQuery造成的。使用下面的函数动态加载带有回调的jQuery。将jQuery代码放入回调函数中

function loadScript(url, callback) {
    var s = document.createElement('script');
    s.type = 'text/javascript';
    s.src = url;

    if (typeof(callback) === 'function') {
        s.onload = s.onreadystatechange = function(event) {
            event = event || window.event;
            if (event.type === "load" || (/loaded|complete/.test(s.readyState))) {
                s.onload = s.onreadystatechange = null;
                callback();
            }
        };
    }

    document.body.appendChild(s);
}

/* Load up jQuery */
loadScript('https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js', function() {
    // Put your jQuery code here.
});

为什么要动态添加脚本标记?如何断定jquery不起作用?这听起来像是竞争条件。上面的代码以异步方式加载jQuery,因此,在下载并加载jQuery之前,您将无法访问它。该.js文件使用的是一个simile$(document)。单击(function(){alert('works');});我在js文件(加载在页脚中)和正文中的html文件中都有相同的代码。我得到的控制台错误是“$未定义”您是否尝试使用jQuery而不是$?完全错误-脚本可以在页面中动态加载。搞定了!谢谢jdp!