我的Chrome控制台发生了一些奇怪的事情!任务是将jQuery lib添加到页面,然后使用它(jQuery)做一些事情。我写了一些代码:
//First part
var script = document.createElement('script');
script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js';
script.type = 'text/javascript';
document.getElementsByTagName('head')[0].appendChild(script);
//Second part
$('a[href="?tab=MM"]').text('asdasdasd');
当我将整个代码粘贴到控制台时 - 我得到TypeError: Property 'text' of object [object HTMLAnchorElement] is not a function
但是!当我分别粘贴第一部分(创建脚本标记)然后第二部分(jQuery表达式)时,我得到正常的预期结果!
谁能解释我做错了什么?我该怎么做才能以正确的方式制作剧本?
答案 0 :(得分:5)
当您逐行运行代码时,浏览器有时间下载并执行您要附加的脚本元素中的JavaScript。
当您将其包含在页面中时,只要将脚本元素添加到DOM中,就会执行“第二部分”,但在当前脚本完成之前,将不会执行添加到页面的JS。 / p>
这就是jQuery的getScript
方法采用回调函数的原因。
您可以获得类似的效果,但将“第二部分”包装在函数中,并将其用作脚本元素上的加载事件侦听器。我不知道浏览器支持是什么样的。