我有一堆复选框,链接到用户可以下载的文档。我已经砍掉了一些代码来到这里。
到目前为止,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();" />
答案 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”