我是javascript的新手,我需要维护一个网站。 实际的功能是将几张卡下载到一个文件中,每个标签一张卡片。由于用户可以拥有大量的卡片,治疗不能总是成功(标签太多),我想创建一个文件,例如20个标签。
var printTerm = function(grid){
var rows = grid.selected;
if(rows==null) return;
var ids = rows.map(function(val){return grid.getDataByRow(val).num_terme;});
var nbMax = 20;
var nbFic;
var idsPartiel;
var posDebut;
var posFin;
var a;
if(ids.length > nbMax)
{
idsPartiel = ids;
if(ids.length % nbMax == 0) nbFic = ids.length / nbMax;
else nbFic = ((ids.length - (ids.length % nbMax)) / nbMax) + 1;
for (i=0 ; i< nbFic ; i++)
{
posDebut = (nbMax * i);
if(i == nbFic - 1) posFin = idsPartiel.length + 1;
else posFin = posDebut + nbMax;
ids = idsPartiel.slice(posDebut,posFin);
a = new Element('a', 'id':'download','href':'php/utils/export2pdf.php?ids='+ids.join(',')})
.addEvent('click',function(){location.href=this.href;}).inject(document.body);
a.fireEvent('click');
a.dispose();
}
}
else
{
a = new Element('a',{'id':'download','href':'php/utils/export2pdf.php?ids='+ids.join(',')})
.addEvent('click',function(){location.href=this.href;}).inject(document.body);
a.fireEvent('click');
a.dispose();
}
};
当卡的数量小于或等于nbMax时,它运行良好,当必须有多个文件时,不是:只有循环的最后一段创建文件。 当我试着看看萤火虫发生了什么时,我看到了我的治疗线,但只有最后一个结束了。 谢谢你的帮助。
答案 0 :(得分:0)
如果我正确阅读了您的代码,您正试图让浏览器将大量文件下载到单独的标签中。大多数浏览器都不会非常感谢您尝试以这种方式启动下载循环,用户也不会真正想要那些可能会突然出现的对话框。
将它们打包到zip文件服务器端并发送一个文件会更好。它会更有效,更方便用户使用。