2010-09-09 28 views
14

Tôi có hình ảnh của tôi trong một câu lệnh if:Làm cách nào để ẩn hình ảnh bị hỏng trong javascript?

if (item.image) 
    historyHtml += '<a href=' + item.image + ' class="image" target="_blank"><img src="' + item.image +'" width="111px"/></a>'; 
+1

Xác định "hình ảnh bị hỏng"? Tôi không hiểu. –

+0

Nếu item.image là từ một url bị hỏng. Ví dụ khi nó hiển thị đọc X: http://img807.imageshack.us/img807/8431/brokenimage.png – jprim

Trả lời

33

Bạn có thể sử dụng các handler onerror. Trong hình thức inline, nó trông như thế này:

<img src="someimage.jpg" onerror="this.style.display='none';" /> 
+0

Xin chào Piskvor, cảm ơn bạn rất nhiều. Tôi đã thử nó và nó thông qua tôi trở lại lỗi: if (item.image) historyHtml + = ''; – jprim

+2

@jprim: "lỗi" gây khó chịu. Điều gì xảy ra chính xác khi bạn thử điều này? – spender

+3

@jprim: Bạn không thoát khỏi dấu ngoặc kép một cách chính xác. Hãy thử điều này: if (item.image) historyHtml + = '' – spender

8

Như @piskvor nói, thực sự tải hình ảnh trong thẻ img là cách duy nhất để tìm hiểu liệu URL bị hỏng hay không. Sự kiện error bị kích hoạt nếu tải không thành công.

Nhưng nhìn vào mã của bạn, có thể cách tiếp cận ngược lại có ý nghĩa nhất: Ẩn theo mặc định <a> và hiển thị nó trong sự kiện onload của hình ảnh.

tóm lược:

<a href=".." id="image228" style="display: none"> 
<img src="..." onload="this.parentNode.style.display = 'block'"> 
</a> 
+0

Xin chào Pekka, cảm ơn sự giúp đỡ của bạn. Nếu tôi đặt đoạn mã đó trong liên kết, nó vẫn cho tôi lỗi. – jprim

+1

@jprim * what * errors? –

+0

Lỗi cú pháp trong Dreamweaver khi phát triển. Tôi đã nhận nó từ Spender dưới đây. Cảm ơn. – jprim

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