我正在使用Phonegap和JQueryMobile来创建Web应用程序。我是javascript的新手,我遇到了问题。
我的问题是在一个名为“testscript.js”的文件中调用一个函数,该函数名为testFunc。 testscript.js只包含这个:
function testFunc() {
console.log("Yes I work");
}
在我的html页面中,我有以下代码:
<script>
$('#pageListener').live('pageinit', function(event)
{
testFunc();
});
</script>
测试功能在我的“testscript.js”中找到,我在head标签中包含了这一行:
<script src="testscript.js"></script>
我得到的错误是“未定义testFunc”。
我假设它有某种类型的范围问题,因为我可以调用其他jquery函数,例如:
alert("I work");
我可以通过将它们粘贴在其他地方的html中的脚本标记中来调用我的函数。
我尝试过各种方式调用我的功能但没有成功,感谢任何帮助!
答案 0 :(得分:1)
只要在PhoneGap触发testscript.js
事件时加载pageinit
,并且testFunc
函数是全局函数,就没有理由不起作用。< / p>
你没有向我们展示你的testFunc
,但我的猜测是它不是一个全球性的,而是你的内容,例如:
$('#pageListener').live('pageinit', function(event)
{
function testFunc()
{
// Do something here
}
});
或只是范围界定功能
(function()
{
function testFunc()
{
// Do something here
}
})();
无论哪种方式,因为它在另一个函数中声明,它是该函数的本地函数,而不是全局函数。要从另一个脚本文件中调用它,您需要能够从全局命名空间中获取它(遗憾的是)。最好的方法是不使其成为全球性的,但要创建一个一个全局,您将把所有共享内容放在上面,如下所示:< / p>
(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();
});
答案 1 :(得分:1)
您必须在html中的其他jquery代码之前包含testscript.js。像这样:
<script src="testscript.js"></script>
<script>
$('#pageListener').live('pageinit', function(event)
{
testFunc();
});
</script>