Javascript 基于复选框的文件下载

Javascript 基于复选框的文件下载,javascript,download,checkbox,Javascript,Download,Checkbox,我有一堆复选框,它们链接到用户可以下载的文档。我在到达这里的时候已经破解了一些代码 到目前为止,downloadChecked函数按预期工作,但我似乎无法使makFrame函数正确运行。目前它似乎什么也没做 function makeFrame( url ) { ifrm = document.createElement( "IFRAME" ); ifrm.setAttribute( "style", "display:none;" ) ; ifrm.setAttribute( "src"

我有一堆复选框,它们链接到用户可以下载的文档。我在到达这里的时候已经破解了一些代码

到目前为止,downloadChecked函数按预期工作,但我似乎无法使makFrame函数正确运行。目前它似乎什么也没做

function makeFrame( url ) 
{ 
ifrm = document.createElement( "IFRAME" ); 
ifrm.setAttribute( "style", "display:none;" ) ;
ifrm.setAttribute( "src", url ) ; 
ifrm.style.width = 0+"px"; 
ifrm.style.height = 0+"px"; 
document.body.appendChild( ifrm ) ; 
}  

function downloadChecked( )
{
for( i = 0 ; i < document.downloadform.elements.length ; i++ )
{
  foo = document.downloadform.elements[ i ] ;
  if( foo.type == "checkbox" && foo.checked == true )
  {
    makeFrame('somefile.do?command=download&fileid=' + foo.name );
  }
}
}
函数makeFrame(url)
{ 
ifrm=document.createElement(“IFRAME”);
setAttribute(“样式”,“显示:无;”);
setAttribute(“src”,url);
ifrm.style.width=0+“px”;
ifrm.style.height=0+“px”;
文件.body.appendChild(ifrm);
}  
函数下载已检查()
{
对于(i=0;i
和相应的HTML

<form name="downloadform">
<input type="checkbox" name="file" id="file1"     
value="file source etc" />

<input type="checkbox" name="file" id="file2"     
value="file source etc" />

<input type="button" value="Download all" onClick="downloadChecked();" />

当您声明

ifrm = document.createElement( "IFRAME" ); 
在函数内部,您正在创建一个全局对象。因此,每次调用makeframe()时,您都在销毁上一个iframe。 尝试:


您的iframe代码是正确的,应该可以工作。但是,在downloadChecked函数中,您将foo.name附加为fileid查询字符串属性,该属性与当前标记一起将生成“&fileid=file”。假设您将查询字符串的fileid存储在输入的value属性中,您可能希望将“foo.name”更改为“foo.value”

感谢您的响应,但它似乎仍然不起作用,但究竟是什么问题?没有加载iframe?只有一个?当我按下下载按钮时,它什么也不做。Explorer似乎加载了一秒钟,然后停止。对于一个或多个选择,没有下载提示正在使用显示隐藏它:隐藏导致任何问题?问题可能与
makeFrame('somefile.do?command=download&fileid='+foo.name)有关检查开发人员/调试工具是否存在任何错误。这将帮助我们确定您的功能在哪一点失败。如果您使用的是Firefox,那么您需要使用。包括IE9+在内的所有最新浏览器都内置了开发工具。您的下载处理程序“somefile.do”是否为您的文件设置了适当的标题?是的,您的回答是正确的,虽然我现在已将其更改为.value,但我仍然没有收到任何下载提示/消息,似乎什么都没有发生
  var ifrm = document.createElement( "IFRAME" );