我有许多外部js文件,每个文件都包含一个js数组。我可以很容易地引用这些文件并将它们放到我的网页中,但是通过占位符访问数组是不行的。如果该文件名为' walberton.js'它包含的数组名为' walberton'。
myBoundary =' walberton'
以下作为数组的占位符是隐式陈述的(walbertonx):
function showHideBoundary(myBoundary) {
var boundarySourceFile = myBoundary + '.js';
if (typeof walbertonx == 'undefined') {
var poll;
var timeout = 100; // 10 seconds timeout
var s = document.createElement("script");
s.src = boundarySourceFile;
document.body.appendChild(s);
poll = function () {
setTimeout(function () {
timeout--;
if (typeof walbertonx !== 'undefined') {
// External file loaded
drawWSCountyBoundary(walbertonx);
} else if (timeout > 0) {
poll();
} else {
// External library failed to load
alert("Apologies. Unable to load Boundary at this time.");
}
}, 100);
};
poll();
} else if (walbertonx !== undefined && line === undefined && line.getMap() === null) {
drawWSCountyBoundary(walbertonx);
} else if (walbertonx !== undefined && line !== undefined && line.getMap() !== null) {
line.setMap(null);
} else {
line.setMap(map);
}
}
我的想法是对我拥有的所有163个边界文件进行代码重用。所以,就像我可以用myBoundary引用文件一样,我可以在成功加载后用实际变量替换walbertonx。诀窍是我需要知道在加载之前要检查什么,并且一旦加载就使用而不是占位符。
答案 0 :(得分:0)
全局范围内的代码应该可以被其后加载的所有文件访问。确保包含你的“walberton.js”#39;先归档。之后,您应该能够访问在全局范围内授予它的阵列。
如果符合您的喜好,您也可以将数组附加到窗口对象,如下所示:
Window.walberton = walberton
然后你可以在你的辅助文件中访问它
alert(Window.walberton)
如果您想动态添加它们,请考虑在窗口上设置全局对象数组
Window.fileArrays['walberton'] = walberton
Window.fileArrays['other'] = other
您确保在要添加阵列的每个文件中执行此操作。 然后你可以迭代它们。确保在完成后将它们从窗口中分离出来。