为什么当我在jquery块内部发出警报时,它会以其他方式运行,它不会显示任何输出?
<script type="text/javascript">
(function map() {
var test = document.createElement('script');
test.type = 'text/javascript';
test.async = true;
test.src = 'myjsfile.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(test, s);
});
</script>
我正在尝试创建一个插件,脚本调用myjsfile.js并将执行其中的函数,只有在我在上面的代码中添加alert()。
答案 0 :(得分:2)
我不确定你是想尝试创建一个稍后执行的函数还是一个自执行函数。
如果您正在尝试执行自执行功能,请使用以下语法:
(function () {
alert("hello");
})();
如果您正在尝试创建一个函数以供以后执行:
function myfunction() {
alert("hello");
}
myfunction();// This is the "later" execution
希望这有帮助!
答案 1 :(得分:1)
如果您显示的代码是文档中的第一个脚本标记,我可能会发现这可能会导致问题:
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(test, s);
为什么不将它直接贴在头部或身体上?在我看来,更直接。
(document.getElementsByTagName('head')[0]
|| document.getElementsByTagName('body')[0]).appendChild(test);
此外,您可能无法获得任何输出,因为您实际上并未调用您的函数。试试这个:
<script type="text/javascript">
(function map() {
// Your code here
})(); // Add () to call your function
// Or, just call it the old fashioned way when you're done.
map();
</script>
另外需要注意的是,map
已经是jQuery中的一个函数,所以要小心你的名字空间以及你如何调用你的函数。