[問題] $.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