Как да намерите етикети Img, които имат src null. и изтриването му

Трябва да изтрия или скрия маркера Img или неговия родител, когато Img има src="".

Имам скрипт, но не работи..

window.onload=function(){
   var imgs = document.getElementsByTagName("img");
   for(var i = 0; i < imgs.length; i++)
    {
        var img = imgs[i];
        if(img.src==""){
         img.parentNode.removeChild(img);
        }
    }
}

Не намира изображението със scr="". докато в IE и Safari се показва кръстен знак (червен).


person Anil    schedule 27.07.2010    source източник


Отговори (2)


Можете да използвате jQuery за това :)

$(document).ready(function(){
    $("img").each(function(){
        if($(this).attr("src") == null || $(this).attr("src") == '')
         {
             $(this).remove();
          }
    });
});

Заобиколното решение е да зададете стила на контейнера div, където има новините като display:none; тогава след като th за всеки цикъл се изпълни, вие задавате div като видим.

тук имате макет на код..

 //html (iframe content)
 <div id="newsContainer" style="display:none;">
 </div>

$(document).ready(function(){
    $("img").each(function(){
        if($(this).attr("src") == null || $(this).attr("src") == '')
         {
             $(this).remove();
          }
    });
    $("#newsContainer").show();
 });
person David Bonnici    schedule 27.07.2010
comment
благодаря за отговора.. прилагам това - person Anil; 27.07.2010
comment
Хей Дейвид.. благодаря за отговора. работих за мен. Ще маркирам това като отговор. Но имам нужда от по-конкретен отговор. Имам .asp и имам iframe в това и този iframe е попълнен с новини и изображения. iframe използва html страница. Поставих този код на html страница. но сцената е, че първо IE показва знака ЧЕРВЕН кръст и след като цялата страница се зареди, премахва етикета img. Приложих моя скрипт към събитието ‹img› етикети при зареждане, но не проработи. всякаква помощ по въпроса. - person Anil; 27.07.2010

Можете да използвате jquery, за да добавите функционалност, която ще направи този кросбраузър съвместим, без да се побъркате. Вашият код в крайна сметка ще изглежда така

$(document).ready(function() {
    $("img[src='']").remove();
});
person C Bauer    schedule 27.07.2010
comment
Не този, който гласува против, но докато jQuery може да е javascript, javascript не е jQuery. - person Daniel Sloof; 27.07.2010
comment
В наши дни всеки използва jQuery за всичко. Не че аз самият не харесвам jQuery, но това показва, че нещо сериозно не е наред както с начина, по който JS е имплементиран (съвместимост с различни браузъри!?), така и с набора от функции на JS от страна на клиента. Твърде много прости задачи се нуждаят от библиотека от 24 000 знака (предполагам). Вкарването на цялата тази функционалност в JS от страна на клиента би било толкова много работа, колкото и цялата оптимизация на JS интерпретатора, която правят сега, но би довело до по-малко трафик... - person MvanGeest; 27.07.2010
comment
Благодаря за отговора.. трябва да го сложа на готово събитие.. Прав съм - person Anil; 27.07.2010
comment
Така че получих отрицателен вот заради това колко лошо е внедрен javascript в браузърите? - person C Bauer; 27.07.2010
comment
Вече сте избрали отговор, този друг човек не отговори ли на въпроса? След това трябва да премахнете отметката или ние не знаем, за да продължим да ви помагаме. - person C Bauer; 27.07.2010
comment
Току-що проверих отговора си по-горе, предполагайки, че вашите празни src img тагове всъщност изглеждат като ‹img src=''› тогава работи, но ако вашият src изобщо не съществува, ще трябва нещо друго. Да, имате нужда от документ.ready(). - person C Bauer; 27.07.2010
comment
@@ C Bauer.... Благодаря, че ми помогна. Избрах това като отговор, защото внедрих горното решение и то даде това, което точно исках. Не казвам, че отговорът ви е грешен. но редактирах въпроса си накрая. - person Anil; 28.07.2010
comment
@Anil – Съжалявам, но мисля, че това многоточие (...) означава нещо различно, откъдето идвам, мислех, че посочвате, че все още имате нужда от помощ по този въпрос, когато казахте благодаря момчета...... Наздраве! - person C Bauer; 28.07.2010