从函数内调用外部函数-Javascript
我正在使用Phonegap和JQueryMobile创建一个web应用程序。我是javascript新手,遇到了一个问题 我的问题是调用一个名为“testscript.js”的文件中的函数,该函数名为testFunc。testscript.js仅包含以下内容:从函数内调用外部函数-Javascript,javascript,jquery,jquery-mobile,cordova,Javascript,Jquery,Jquery Mobile,Cordova,我正在使用Phonegap和JQueryMobile创建一个web应用程序。我是javascript新手,遇到了一个问题 我的问题是调用一个名为“testscript.js”的文件中的函数,该函数名为testFunc。testscript.js仅包含以下内容: function testFunc() { console.log("Yes I work"); } 在我的html页面中,我有以下代码: <script> $('#pageListener').live('pa
function testFunc() {
console.log("Yes I work");
}
在我的html页面中,我有以下代码:
<script>
$('#pageListener').live('pageinit', function(event)
{
testFunc();
});
</script>
我可以通过将函数粘贴在html其他地方的脚本标记中来调用函数
我尝试了各种方法调用我的函数,但没有成功,非常感谢您的帮助 只要在PhoneGap触发
pageinit
事件时加载了testscript.js
,并且假设testFunc
函数是全局函数,就没有理由不工作
您还没有向我们展示您的testFunc
,但我猜它不是一个全局函数,而是包含在某些内容中,例如:
$('#pageListener').live('pageinit', function(event)
{
function testFunc()
{
// Do something here
}
});
或者只是一个作用域函数
(function()
{
function testFunc()
{
// Do something here
}
})();
不管怎样,因为它是在另一个函数中声明的,所以它是该函数的局部函数,而不是全局函数。要从另一个脚本文件调用它,您需要能够从全局名称空间获取它(遗憾的是)。做到这一点的最佳方法是不要让它成为一个全球性的,而是创建一个全球性的,你将把所有共享的东西都放在上面,如下所示:
(function()
{
if (!window.MyStuff)
{
window.MyStuff = {};
}
window.MyStuff.testFunc = testFunc;
function testFunc()
{
// Do something here
}
})();
$('#pageListener').live('pageinit', function(event)
{
MyStuff.testFunc(); // Or: window.MyStuff.testFunc();
});
…你这样称呼它:
(function()
{
if (!window.MyStuff)
{
window.MyStuff = {};
}
window.MyStuff.testFunc = testFunc;
function testFunc()
{
// Do something here
}
})();
$('#pageListener').live('pageinit', function(event)
{
MyStuff.testFunc(); // Or: window.MyStuff.testFunc();
});
您必须在html中的其他jquery代码之前包含testscript.js。像这样:
<script src="testscript.js"></script>
<script>
$('#pageListener').live('pageinit', function(event)
{
testFunc();
});
</script>
$('#pageListener').live('pageinit',函数(事件)
{
testFunc();
});
testscript.js看起来像什么?特别是定义位的testFunc?我更新了我的问题,以显示testscript.js文件和testFunc的样子。我认为我的testFunc是全局的。我已经编辑了我的原始问题,以显示testscript.js的外观。谢谢!这就解决了我的问题。然而,我不清楚为什么我需要包含它,因为它已经包含在我正在使用的其他javascript库(Jquery、Jquery mobile等)的head标记之间。你能解释一下吗?@Demonofloom:正如我在回答中所说的,只要PhoneGap调用你的pageinit
处理程序时testscript.js
已经加载,它就会工作。如果它在您移动testscript.js
include时开始工作,这意味着当PhoneGap启动您的处理程序时它还没有被加载——例如,您的脚本链接在页面上的位置太低了。是的。T.J.说得对。只是调用函数时没有加载脚本。