基于复选框的文件下载

时间:2012-01-29 22:15:21

标签: javascript download checkbox

我有一堆复选框,链接到用户可以下载的文档。我已经砍掉了一些代码来到这里。

到目前为止,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 );
  }
}
}

和相应的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();" />

2 个答案:

答案 0 :(得分:0)

宣布

ifrm = document.createElement( "IFRAME" ); 

在函数内部,您正在创建一个全局对象。因此,每次调用makeframe()时,都会破坏之前的iframe。 尝试:

  var ifrm = document.createElement( "IFRAME" ); 

答案 1 :(得分:0)

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