2009-09-17 52 views

Trả lời

10

UPD: xin lỗi, đây là một câu trả lời sai, xem ý kiến. This là câu trả lời đúng.

Something như thế này:

images = document.getElementsByTagName('img'); 
for (i = 0; i < images.length; i++) { 
    images[i].parentNode.removeChild(images[i]); 
} 

HOẶC một sửa đổi nhỏ của nỗ lực đầu tiên của tôi để trả lời câu hỏi này:

var images = document.getElementsByTagName('img'); 
var l = images.length; 
for (var i = 0; i < l; i++) { 
    images[0].parentNode.removeChild(images[0]); 
} 
+2

Cải thiện được đề xuất: sử dụng 'var' để khai báo đúng 'hình ảnh' và 'i'. – bobbymcr

+2

Tính năng này không hoạt động - xem giải thích bên dưới. – bobince

+0

Khi bobince chỉ ra, câu trả lời này không tính đến thực tế là NodeList được trả về bởi getElementsByTagName là trực tiếp .. – NickFitz

6

Với jQuery:

$("img").remove(); 
+5

Tôi có phải bao gồm toàn bộ thư viện chỉ cho một tác vụ đơn giản không? – steven

+2

+1 jQuery ... không cần phải tái tạo lại bánh xe. :-) – beggs

+2

@beggs: Tôi không đồng ý. Đưa ra một câu trả lời JQuery khi không có dấu hiệu cho thấy khung công tác JQuery đang được sử dụng, giống như đưa ra một câu trả lời dựa trên .NET cho câu hỏi C++. Nếu bạn đang sử dụng nó tuyệt vời và ok của nó như là một bình luận rằng nó có thể được xem xét woth nhưng nó không phải là một câu trả lời cho một câu hỏi không Jquery. n1313 câu trả lời là hầu như không khoa học tên lửa và thêm một khuôn khổ lớn .js vào trang của bạn để bạn không "tái tạo lại bánh xe" chỉ không có ý nghĩa. – AnthonyWJones

0

Nếu không sử dụng thư viện bên ngoài:

var images = document.getElementsByTagName('img'); 
for(var i=0; i < images.length; i++) { 
    images[i].parentNode.removeChild(images[i]); 
} 

Hoặc sử dụng jquery:

$('img').remove(); 
+1

Tôi đã ninja'd;) – Keeper

34

Câu trả lời trước sẽ chỉ xóa từng ảnh thứ hai.

Hãy nhớ NodeLists được trả về bởi getElementsByTagName hoặc các phương thức DOM khác là ‘hoạt động’. Điều đó có nghĩa là khi bạn xóa hình ảnh 0, hình ảnh 1 –n chuyển xuống 0– (n-1); đây là 'sự lặp lại phá hoại'.

Để tránh điều này, hoặc là làm cho một mảng sao chép tĩnh của NodeList (như câu trả lời jQuery đang làm có hiệu quả), hay hơn, nhanh hơn, chỉ cần lặp danh sách ngược:

for (var i= document.images.length; i-->0;) 
    document.images[i].parentNode.removeChild(document.images[i]); 
+1

Một câu trả lời hoạt động, chúng ta hãy hy vọng steven cập nhật câu trả lời được chấp nhận để phản ánh điều này. –

12

này nên làm việc quá:

var images = document.getElementsByTagName('img'); 
while(images.length > 0) { 
    images[0].parentNode.removeChild(images[0]); 
} 
+0

Vâng, đây là một cách tiếp cận tốt để lặp lại phá hoại, khi bạn biết bạn sẽ loại bỏ * mọi mục *. – bobince

+0

Đây là câu trả lời hay nhất, vì cú pháp trong khi kết hợp với NodeList trực tiếp rõ ràng hơn. – eyelidlessness

Các vấn đề liên quan