如何加载许多外部JS数组之一并在特定外部JS文件中引用该变量

时间:2017-07-15 20:59:11

标签: javascript arrays

如果在其他地方重复这个问题,我会提前道歉。我不知道如何通过单独的研究正确地表达问题以找到答案。

我有许多外部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。诀窍是我需要知道在加载之前要检查什么,并且一旦加载就使用而不是占位符。

1 个答案:

答案 0 :(得分:0)

全局范围内的代码应该可以被其后加载的所有文件访问。确保包含你的“walberton.js”#39;先归档。之后,您应该能够访问在全局范围内授予它的阵列。

如果符合您的喜好,您也可以将数组附加到窗口对象,如下所示:

Window.walberton = walberton

然后你可以在你的辅助文件中访问它

alert(Window.walberton)

如果您想动态添加它们,请考虑在窗口上设置全局对象数组

Window.fileArrays['walberton'] = walberton
Window.fileArrays['other'] = other

您确保在要添加阵列的每个文件中执行此操作。 然后你可以迭代它们。确保在完成后将它们从窗口中分离出来。