Javascript 如何允许通过Javaservlet使用锚定标记进行多次下载?
我试图从用户(在chrome中工作)一次点击下载多个pdf。一旦用户单击相关按钮,就会触发for循环,查看需要下载多少文档,每个文档都需要一个下载对话框。在for循环中,我模拟每个pdf的点击(这是通过javascript的点击事件完成的) Java servlet代码如下所示:Javascript 如何允许通过Javaservlet使用锚定标记进行多次下载?,javascript,html,download,anchor,Javascript,Html,Download,Anchor,我试图从用户(在chrome中工作)一次点击下载多个pdf。一旦用户单击相关按钮,就会触发for循环,查看需要下载多少文档,每个文档都需要一个下载对话框。在for循环中,我模拟每个pdf的点击(这是通过javascript的点击事件完成的) Java servlet代码如下所示: out.print("<a id='exportAchievement' style='display:none' href='" + tempFileName + "'download='" + pdfName
out.print("<a id='exportAchievement' style='display:none' href='" + tempFileName + "'download='" + pdfName + "'></a>");
out.print("<script>document.getElementById(\"exportAchievement\").click();</script>");
out.print(“”);
out.print(“document.getElementById(\“ExportAchasition\”)。单击();”;
这对一个pdf非常有效,但只要我做了两个或更多,弹出的每个对话框都会使用第一个pdf(名称和实际pdf与第一个相同)
我检查了我的变量是否混淆了,但通过在上述代码之前和之后使用打印输出,它表明变量是正确的
我的假设是,错误发生在浏览器端,因为当需要下载一个pdf文件时,对话框会工作,但我被难住了
相关for循环如下所示:
// pdfs.length determines the number of pdf's to download
for (int j = 0; j < pdfs.length; j++) {
if (pdfs[j].contains(".pdf")) {
try {
// build the path to the pdf
achFile = sub.getPath() + "\\" + pdfs[j];
// fills in relevant fields in the pdf
if (PDFFill.fillPDF(achFile, student, user, context)) {
String pdfName = student.getName() + "-" + achFile.substring(achFile.lastIndexOf("\\") + 1);
String tempFileName = Protocol.ACHIEVEMENT_PATH + "/" + pdfName;
out.print("<a id='exportAchievement' style='display:none' href='" + tempFileName + "' download='" + pdfName + "'></a>");
out.print("<script>document.getElementById(\"exportAchievement\").click();</script>");
} else {
this.printWithNoty("Could not print PDF. " + achievement, "warning");
}
} catch (NullPointerException n) {
System.out.println(n.getMessage());
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
//pdfs.length决定要下载的pdf的数量
对于(int j=0;j
这是因为您对所有元素都使用了一个id
。ID是唯一的。如果您对所有内容都使用相同的ID,则无法区分它们,因此您不能期望得到多个结果
<a id='exportAchievement' ...>
你可以让每个元素的ID都是唯一的,然后它就可以工作了。谢谢sxnine,我一发布它就看到了,但无法回答,因为我是新手。工作起来很有魅力!