我正在尝试将文件列表存储在全局变量中,以便链接可以访问单个文件。我有这个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");
}
如评论中所述,首次加载文件时,测试功能会显示正确的输出。 但是,单击生成的按钮时,输出为“它为空!”。
对此的任何帮助将不胜感激。 这是一项任务,非常紧急。
谢谢!
答案 0 :(得分:1)
您的问题在于您的var doc = parent.document.getElementById('main').contentWindow.document;
而非全局变量。但是您用于文件的范围。
答案 1 :(得分:1)
我认为您只是在声明之前尝试使用readFiles
。
如果您将function readFiles(fileList) {...}
更改为window.readFiles = function (fileList) {...}
,则test
会说[object File]
我赞成parent.document.getElementById('main').contentWindow.document;
行,因为我认为这不行(这是火灾错误=))。