Написать функцию на JS

A2
На сайте с 01.02.2011
Offline
102
573

Здравствуйте, уважаемые форумчане

На странице есть

<div class="photo"><img src="..."></div>

<div class="photo"><img src="..."></div>

<div class="photo"><img src="..."></div>

Задача - написать функцию js

Назначение этой функции - обойти все дивы с классом photo

и, если изображения в этом диве нет, либо ширина этого изображения равна 1px,

то скрыть эти дивы (display:none)

Заранее благодарен за помощь

melkozaur
На сайте с 06.04.2010
Offline
536
#1

Задача действительно именно такая?

Я к тому, что если данные в бд, то может просто найти все пустые и удалить их?

A2
На сайте с 01.02.2011
Offline
102
#2
melkozaur:
Задача действительно именно такая?
Я к тому, что если данные в бд, то может просто найти все пустые и удалить их?

Задача действительно такая. Изображения из внешнего источника - другого сайта

S
На сайте с 13.10.2014
Offline
171
#3

вам на чистом js или jquery подойдет?

		

$('.photo > img').each(function(e){
if($(this).attr('src') == '' || $(this).width() == 1 )
{
$(this).parent().css('display','none');
}
})
A2
На сайте с 01.02.2011
Offline
102
#4
silicoid:
вам на чистом js или jquery подойдет?
		
$('.photo > img').each(function(e){
if($(this).attr('src') == '' || $(this).width() == 1 )
{
$(this).parent().css('display','none');
}
})

Спасибо, но видимо я не совсем точно изложил задачу

Вместо

и, если изображения в этом диве нет

следует читать

и, если изображение, указанное в этом диве, не существует (404),

Эгоист
На сайте с 12.09.2011
Offline
71
#5

ошибка 404 серверная её через php проверяют

Апокалипсис
На сайте с 02.11.2008
Offline
391
#6
Записки нищего (http://zapiskinishego.ru) - мой личный блог Услуги php программиста. Очень нужна любая работа. Не покупают? Поведенческий аудит интернет-магазина за 5000 руб. (/ru/forum/990312)
Эгоист
На сайте с 12.09.2011
Offline
71
#7

буду знать, не знал, об этом объекте

VF
На сайте с 20.10.2018
Offline
10
#8

Как то так, если на нативном


function imageExists(image_url){

var http = new XMLHttpRequest();

http.open('HEAD', image_url, false);
http.send();

return http.status != 404;

}

document.querySelectorAll('div.page').forEach((element) => {
if (element.children.length > 0){
if (element.children[0].tagName === 'IMG' && element.children[0].width === 1 && !imageExists(element.children[0].src)) {

element.style.display = 'none'
}
} else {
element.style.display = 'none'
}
})
S
На сайте с 13.10.2014
Offline
171
#9

упс. я чего-то вообще закрутился

в общем, есть еще такой вариант

$(document).ready(function(){

function hideElement(jQueryObject)
{
jQueryObject.parent().css('display','none');
}

//load error check
$('.photo > img').on('error', function(){
hideElement($(this));
})

// check size after load
$('.photo > img').on('load', function(){
var element = $(this);
if(element.width() == 1){
hideElement(element);
}
})
})

конечно, можно как-то еще красивее, но это то, что вервым в голову пришло

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий