Javascript jQuery循环数组,其中包含div内容和html2canvas

Javascript jQuery循环数组,其中包含div内容和html2canvas,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个名为listArray()的数组,它包含两个属性pageNumber和content 属性content保存容器div html。这是很有用的,因为我有一个分页,我不会将信息实时保存到数据库中,而是插入到一个数组中,直到最后插入到数据库中 $container = $('#container'); $.each(listArray, function(index, value){ // So, for each index in array // it must em

我有一个名为
listArray()
的数组,它包含两个属性
pageNumber
content

属性
content
保存容器div html。这是很有用的,因为我有一个分页,我不会将信息实时保存到数据库中,而是插入到一个数组中,直到最后插入到数据库中

$container = $('#container');

$.each(listArray, function(index, value){

    // So, for each index in array
    // it must empty the container
    // to receive a new value
    $container.empty();
    $container.append(value.content); // value.content = pure html      

    html2canvas($container, {
        height: $container.height() + 180,
        onrendered: function(canvas) {

            var data = canvas.toDataURL('image/png');           
            var file = dataURLtoBlob(data);

            var formObjects = new FormData();
            formObjects.append('file', file);

            $.ajax({
               url: 'ajax_saveImage',
               type: 'POST',
               data: formObjects,
               processData: false,
               contentType: false,
            });
        }
    });
});

正如您所看到的,我的最终目标是保存两个或三个甚至更多的图像。我的问题是,所有图像都在保存中,但都包含(数组的)最后一个索引内容。

已解决

解决方案不是循环,而是调用函数所需的次数。看了这个话题后,我想到了解决办法

var i=0;
函数saveIt(){
$container.empty();
如果(i)
var i = 0;

function saveIt(){  
    $container.empty();

    if(i <= listArray.length - 1){

        $container.append(listArray[i]['content']);

        html2canvas($container, {
            height: $container.height() + 180,
            letterRendering: true,
            onrendered: function(canvas) {

                var data = canvas.toDataURL('image/png');           
                var file = dataURLtoBlob(data);

                var formObjects = new FormData();
                formObjects.append('file', file);

                $.ajax({
                   url: 'ajax_saveImage',
                   type: 'POST',
                   data: formObjects,
                   processData: false,
                   contentType: false,
                });

                i++;
                saveIt(); // Important! - call the function again
            }
        });
    }
}