Задать вопрос
atHome
@atHome

Как на JS перезагрузить битые картинки?

Добрый день!
На сайте циклом генерируются 150+ картинок
for (var item in data) {
	$(".div").append("<img class='img"+item+"' src='generate.php?f="+item+"'>");
}

Часть из них вываливаются в 503 и соответственно не отображаются.
Failed to load resource: the server responded with a status of 503 ()


Попробовал перезагрузить только пустые, результат не очень.
jQuery(window).bind('load', function() {
for (var item in data) {
	size = $('.img'+item).width();
	if (size<17){
		$('.img'+item).attr('src','generate.php?f='+item);		
	}
}
 });


Как мне правильно перезагрузить битые картинки или организовать в принципе изначально показ картинок?
Спасибо.

upd. Вопрос закрыт. Решение в комментариях от Антона Антон
  • Вопрос задан
  • 219 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
YumeReaver
@YumeReaver
Бургомистр
Если изображение не найдено - срабатывает событие $('img').error(function() Лучше обработчик вытащить в тело функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stalker_RED
@Stalker_RED
Ответ написан
Комментировать
@laz652
let nom = 0;
for (var item in data) {
nom++;
	$(".div").append("<img id='Timeout" + nom  + "'  class='img"+item+"' src='generate.php?f="+item+"'>");
}
//в конце страницы :

async function delayedLoop() {
await new Promise(resolve => setTimeout(resolve, 500));
let nomer = 0;
let nom = 'Timeout0';
while(document.getElementById(nom))  {
await new Promise(resolve => setTimeout(resolve, 22));
document.getElementById(nom).src += '?' + new Date().getTime();
nomer++;
nom = 'Timeout'+String(nomer);
}
}
delayedLoop();

// У меня генерация на PHP, для JS, наверное, лучше сразу добавить временную метку к картинкам и 
// сделать небольшую задержку, чтобы код PHP успевал делать запросы к базе данных.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы