JavaScript - 全局变量不变

时间:2013-03-17 11:13:59

标签: javascript variables global reset

我正在尝试将文件列表存储在全局变量中,以便链接可以访问单个文件。我有这个HTML代码:

<input type="file" id="input" multiple onchange="readFiles(this.files)">

然后在外部JavaScript文件中:

theFileList = null;

function test() {
    if (theFileList)
        alert(theFileList[0]);
    else
        alert("It is null!");
}

function readFiles(fileList) {
    if (fileList) {
        // I generate a new page in the "main" frame:
        var doc = parent.document.getElementById('main').contentWindow.document;
        theFileList = fileList;
        test(); // works fine (displays "[object File]").

        // opens html and head tags; writes head section (with stylesheet and external js; closes head and opens body:
        generateHeader(); 
        // create a button to check if global variable is null:
        doc.writeln("<button onclick=\"javascript:test();\">Click</button>");
        // closes body and html tags:
        generateFooter();

        doc.close();
    }
    else
        alert("Something went wrong");
}

如评论中所述,首次加载文件时,测试功能会显示正确的输出。 但是,单击生成的按钮时,输出为“它为空!”。

对此的任何帮助将不胜感激。 这是一项任务,非常紧急。

谢谢!

2 个答案:

答案 0 :(得分:1)

您的问题在于您的var doc = parent.document.getElementById('main').contentWindow.document;而非全局变量。但是您用于文件的范围。

答案 1 :(得分:1)

我认为您只是在声明之前尝试使用readFiles

如果您将function readFiles(fileList) {...}更改为window.readFiles = function (fileList) {...},则test会说[object File]

jsfiddle.net

我赞成parent.document.getElementById('main').contentWindow.document;行,因为我认为这不行(这是火灾错误=))。