I am using a for
loop on a data array, for each element in an array, the element's id
is equal to the name of an img
. For example: if the id
of an element is 1
, there should be a corresponding image in the image folder named as 1
.
Problem: Both jpg
and png
format exist in the img
folder, so I have to check if an image with a specific format exit or not, if it doesn't, then I have to change .jpg
to .png
.
I am going to use it with jQuery .on('error')
function, but the problem is .on('error')
runs after the entire for
loop, so every time when I try to get the id
, I get the last element of an array.
Code :
for (var i = 0; i < organisers_data.length; i++) {
console.log("current ID" + organisers_data[i].id);
organ_data_id = organisers_data[i].id.replaceAll(/^0+(?!$)/g, "");
var imgPath = '<img src="/assets/images/organisers/' + organ_data_id + '.jpg" />';
console.log("before" + imgPath)
$(imgPath).on('error', function(e) {
imgPath = '<img src="/assets/images/organisers/' + organ_data_id + '.png" />';
});
var tableDiv = '';
tableDiv +=
'<div>' +
'<a href="">' +
imgPath +
'</a>' +
'</div>';
if ($('.organisers_table')) {
$('.organisers_table').append(tableDiv)
}
}
}
console shows that
$(imgPath).on('error', function(e) {
imgPath = '<img src="/assets/images/organisers/' + organ_data_id + '.png" />';
});
only take the last element id
,seems the on function work only after the for
loop, but what I want is id
of an element in each loop, what should I do?