Javascript 如何允许通过Javaservlet使用锚定标记进行多次下载?

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

我试图从用户(在chrome中工作)一次点击下载多个pdf。一旦用户单击相关按钮,就会触发for循环,查看需要下载多少文档,每个文档都需要一个下载对话框。在for循环中,我模拟每个pdf的点击(这是通过javascript的点击事件完成的)

Java servlet代码如下所示:

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,我一发布它就看到了,但无法回答,因为我是新手。工作起来很有魅力!