[问题] $.each内的function传入变量

楼主: aaa7513231 (浑沌与秩序)   2016-01-18 18:11:10
大家好,很抱歉我标题下的很奇怪
因为我很难很清楚的一句话描述我的问题
我的问题如下程式码
就是我使用外挂原件去制作成图片
然而我有很多div需要制作后在一起合并成PDF
问题就是我该如何在onrendered: function内
传入index的数值进去,去知道说我现在是做第几个DIV
然后存到array内
var imgData = [];
$.each($(DivId), function(index, value) {
imgData.push(null);
html2canvas($(this), {
onrendered: function(canvas) {
imgData[index] = CanvasResize(canvas);
}
});
});
// 210mm = 793.700787px
// 50px = 13.229167mm
setTimeout(function() {
var pdf = new jsPDF('p', 'mm', [297, 210]);
$.each($(DivId), function(index, value) {
if(index!=0) pdf.addPage();
pdf.addImage(imgData[index], 'png', 20, 20, 170, 0, null,
'NONE');
}
pdf.save(FileName + ".pdf");
document.body.style.zoom = 1.0;
}, 3000);
网页显示
http://pastie.org/10693231#2-9
谢谢大家:)
作者: LPH66 (-6.2598534e+18f)   2016-01-18 20:24:00
包一层 closure 起来onrendered: (function(index){return function(canvas){/*...*/}; })(index) }啊, 上一行最后的 } 是物件结束的 } @@
楼主: aaa7513231 (浑沌与秩序)   2016-01-18 21:08:00
第一次知道closure这东西!!!!!!!!!感谢L大!!!!!,明天来试试:)
作者: mmis1000 (秋月恋枫)   2016-01-20 23:46:00
现在的话,比较推荐 Function.prototype.bind 欧...这个效果跟用closure差不多,但是版面干净很多缺点是太旧的浏览器可能不支援结果是(function(index, canvas){}).bind(null, index)

Links booklink

Contact Us: admin [ a t ] ucptt.com