1

为什么当我在 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() 时才会执行其中的函数。

4

2 回答 2

2

我不确定您是要创建稍后执行的函数还是自执行函数。

如果您尝试执行自执行功能,则语法如下:

(function () {
    alert("hello");
})();

如果您尝试创建一个函数以供以后执行:

function myfunction() {
    alert("hello");
}

myfunction();// This is the "later" execution

希望这可以帮助!

于 2012-08-12T06:06:11.033 回答
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 中的一个函数,所以要小心你的名字空间和你如何尝试调用你的函数。

于 2012-08-12T06:07:35.103 回答