У меня есть код разделяющий фотографию на заданное число квадратов, и мне нужно, чтобы он возвращал массив этих элементов(каждого квадратика), но он возвращает пустой массив.
Но если в функции внутри цикла выводить каждый элемент в консоль всё работает нормально.
var img = new Image();
var width;
var height;
var xlength = 30;
var ylength = 20;
var elements = []; //массив-------------------------------------------------------
img.src = 'http://www.jqueryscript.net/images/Simplest-Responsive-jQuery-Image-Lightbox-Plugin-simple-lightbox.jpg';
img.onload = function() {
width = this.width;
height = this.height;
for (var j = 0; j < ylength; j++) {
for (var i = 0; i < xlength; i++) {
var left = (-1 * width / xlength * i).toString() + "px";
var top = (-1 * height / ylength * j).toString() + "px";
var element = jQuery('<div/>', {
id: i + "" + j,
class: "splitImg",
css: {
"width": Math.floor(width / xlength),
"height": Math.floor(height / ylength),
"background-position": left + " " + top,
"background-image": 'url(' + img.src + ')'
}
})
elements += element[0]; //добавление элементов------------------------------
element.appendTo('#wrapper');
$("#wrapper").width(width + (xlength * -0.5))
}
}
}
console.log(elements);
#wrapper {
display: flex;
flex-wrap: wrap;
}
.splitImg {
background-clip: content-box;
background-repeat: no-repeat;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="wrapper">
</div>