我的应用程序有大约2000行javascript代码。很多这是用户交互/ jQuery。别担心,一切正常:)
但是跟踪代码库变得越来越困难。所以我把文件分成了五个文件。
我认为如果我加载所有文件,它们都驻留在内存中,并且可以相互通信。但它看起来不像。因为,在文件A中,我有var currentPage = getURLvar('slpage');
,而在文件B中我有if ( currentPage == 'someName')
。
但是文件B无法识别变量currentPage。
此外,我在文件C中有som通用脚本,文件A和B可以使用。但我想这不可能解决问题吗?
非常感谢任何建议。
更新
我的javascript开头是这样的:
// FILE A
jQuery(document).ready(function() {
var currentPage = getURLvar('slpage');
if ( (currentPage == 'Aa') || (currentPage == 'Bb') ) {
init_AA();
}
else if ( (currentPage == 'Cc') || (currentPage == 'Dd') ) {
init_BB();
} else if ( (currentPage == 'Ee') || (currentPage == 'Ff') ) {
init_CC();
}
(...)
// FILE B
function init_AA()
{
(...)
}
function getURLvar(name)
{
//Gets the URL and returns the value of specified paramter.
}
答案 0 :(得分:4)
您可以在其他文件中访问脚本的某些部分。你遇到的问题听起来像是一个范围界定。
如果您的变量位于全局命名空间(这不是一个好主意),那么您将能够像您尝试的那样直接访问它。
或者,如果您的变量作用于方法内部,则只能访问该方法。
为了公开你想要的变量,我会为代码创建一个通用的命名空间,并将你的分离的Javascript放入相关的命名空间。
以下是一些资源以获取更多信息:
http://www.dustindiaz.com/namespace-your-javascript/
http://snook.ca/archives/javascript/javascript_name
<强>更新强>
根据你发布的代码,你可以简单地将变量decleration移到anonymouse函数的范围之外。
var currentPage;
jQuery(document).ready(function() {
currentPage = getURLvar('slpage');
...