2010-07-16 5 views
5

Tôi cần một hàm, bắt đầu, khi DOM được tải.Làm cách nào để thay thế tất cả số trống <img src=""> trên một trang có JavaScript được tải trên dom?

Trong HTML trang của tôi một vài trống Hình ảnh Tags, thích và tôi muốn thêm một hình ảnh-Tên vào src-bất động sản khi tất cả mọi thứ được nạp để có được một cái gì đó giống như

<img src="blank.jpg">. 

Chúc Chris

+0

Bất kỳ lý do nào không sử dụng JQuery? – AlG

+0

Có - chúng tôi không muốn quá tải dự án với các khung công tác khác. Chúng tôi đã sử dụng trong prototypeJS phạm vi rộng. – ChrisBenyamin

Trả lời

6
function replaceSrc() 
{ 

    var images = document.getElementsByTagName('img'); 

    for(var i = 0; i < images.length; i++) 
    { 
     var img = images[i]; 

     if(img.src.length == 0) 
     { 
      img.src = 'blank.jpg'; 
     } 
    } 
} 


window.onload = replaceSrc; 

HOẶC nếu bạn muốn thêm nhiều hơn một handler cho sự kiện:

document.addEventListener('load', replaceSrc, false) //W3C 
document.attachEvent('onload', replaceSrc); //IE 
.210

Với jQuery

$(document) 
    .ready(function() { $('img') 
          .filter(function(){ return this.src.length == 0 }) 
           .each(function() { this.src = 'blank.jpg'}) }); 

EDIT:

tôi nhận ra rằng có thể bạn muốn thiết lập thuộc tính src trước những hình ảnh tải vì vậy tôi đã thay đổi mã để bắn vào sự kiện load của tài liệu, trong đó xảy ra trước khi những hình ảnh bắt đầu tải.

3

Sử dụng jQuery! Dễ thôi.

$('img').attr('src','new-image-name.jpg') 

Điều này sẽ đặt thuộc tính src của mỗi img thẻ thành 'new-image-name.jpg'.

2

Với jQuery, điều này sẽ đặt thuộc tính src của tất cả các phần tử img có thuộc tính src trống thành "blank.jpg" khi tải trang.

$.ready(function() { 
    $("img[src='']").attr("src", "blank.jpg"); 
}); 
8

Xây dựng <img src=""> không hợp lệ. Không bao giờ sử dụng nó.

URL không hợp lệ vì url trống có nghĩa là url đến trang hiện tại. Nhưng trang hiện tại là tài liệu HTML, không phải hình ảnh. Trình duyệt có thể thực hiện một truy vấn khác của trang hiện tại và cố gắng sử dụng nó làm hình ảnh (xem this page).

+0

Yup. Trong trường hợp xấu nhất, điều này sẽ kích hoạt nhiều cuộc gọi đến cùng một trang (chính). (Đã đạt đến giới hạn phiếu bầu hàng ngày, nếu không +1) –

0

Bạn có thể sử dụng tập lệnh này.

# Script AddImage.txt 
var string pagefile, image, html 
# Read in the page file. 
cat $pagefile > $html 
# Replace all instances of "<img src="blank.jpg">" with the specified image. 
while ({ sen -r -c "^<img src=&\>^" $html } > 0) 
    sal -r -c "^<img src=&\>^" ("<img src=\""+$image+"\">") $html > null 
# Write page back. 
echo $html > { echo $pagefile } 

Tập lệnh có tính năng ghi bit. Lưu tập lệnh trong tập tin "C: /Scripts/AddImage.txt", chạy nó với lệnh này.

script "C:/Scripts/AddImage.txt" pagefile("/path/to/page.html") image("blank.jpg") 

Nó sẽ thay thế hình ảnh trước đó bằng "blank.jpg".

0

Với JQuery bạn chỉ có thể giải quyết vấn đề của mình bằng cách sử dụng mã sau đây.

$(function(){ 
    $("img[src='']").attr("src", "blank.jpg"); 
});