Lập trình thay đổi src của thẻ img


242

Làm cách nào để thay đổi srcthuộc tính của imgthẻ bằng javascript?

<img src="../template/edit.png" name=edit-save/>

Lúc đầu, tôi có một src mặc định là "../template/edit.png" và tôi muốn thay đổi nó bằng "../template/save.png" onclick.

CẬP NHẬT: đây là html onclick của tôi:

<a href='#' onclick='edit()'><img src="../template/edit.png" id="edit-save"/></a>

và JS của tôi

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }
}

Tôi đã thử chèn cái này vào bên trong chỉnh sửa (), nó hoạt động nhưng cần phải nhấp vào hình ảnh hai lần

var edit_save = document.getElementById("edit-save");
    edit_save.onclick = function(){
       this.src = "../template/save.png";
    }

Câu trả lời:


307

Cung cấp cho thẻ img của bạn một id, sau đó bạn có thể

document.getElementById("imageid").src="../template/save.png";

16
Đối với những việc đơn giản như đặt giá trị của đầu vào hoặc thay đổi src hình ảnh ( đặc biệt khi bạn đang sử dụng các yếu tố có ID), bạn thực sự nên cố gắng tránh jQuery, vì cuộc gọi chậm hơn nhiều so với cuộc gọi JS thuần túy
Brian Leishman

2
@ william44isme và trang của chúng tôi sẽ được tải chậm hơn trước. Tôi nghĩ rằng jQuery chỉ hữu ích cho các trang web sử dụng cùng một mã, hơn thế nữa. ví dụ nếu chúng ta sử dụng mã trên hơn 30 hoặc 50 lần. vì vậy cần phải sử dụng jQuery
Mahdi Jazini

62

Bạn có thể sử dụng cả phương pháp jquery và javascript: nếu bạn có hai hình ảnh chẳng hạn:

<img class="image1" src="image1.jpg" alt="image">
<img class="image2" src="image2.jpg" alt="image">

1) Phương pháp Jquery->

$(".image2").attr("src","image1.jpg");

2) Phương pháp Javascript->

var image = document.getElementsByClassName("image2");
image.src = "image1.jpg"

Đối với loại vấn đề này, jquery là cách đơn giản để sử dụng.


21
Các poster không bao giờ chỉ ra bất kỳ quan tâm đến một giải pháp jQuery. Phương thức jQuery cũng đơn giản hơn. Không trả lời các câu hỏi về JS với các giải pháp jQuery (trừ khi bài đăng cho biết họ muốn điều đó). Nó chỉ khiến mọi người bối rối khi cố gắng học JS.
metaColin

6
getEuityByClassName trả về bộ sưu tập của tất cả các yếu tố. Chúng ta cần đề cập đến chỉ số của các yếu tố quá. var image = document.getElementsByClassName ("image2") [0]; image.src = "image1.jpg"
Tushar Gaurav

34

nếu bạn sử dụng thư viện JQuery, hãy sử dụng hướng dẫn này:

$("#imageID").attr('src', 'srcImage.jpg');

24
Câu hỏi không yêu cầu câu trả lời của jQuery, bao gồm thẻ jQuery hoặc đề nghị sử dụng jQuery.
Popnoodles

10
Nói cho mọi người sử dụng jQuery khi một chức năng tương đương được tích hợp ngay vào Javascript không có ý nghĩa gì. Mỗi câu hỏi JS không yêu cầu câu trả lời jQuery. Giải pháp này là một loại bùn ngăn mọi người tìm hiểu về những gì mà vanilla JS có thể làm.
metaColin

27

bây giờ ổn rồi

function edit()
{   
    var inputs = document.myform;
    for(var i = 0; i < inputs.length; i++) {
        inputs[i].disabled = false;
    }

    var edit_save = document.getElementById("edit-save");

       edit_save.src = "../template/save.png";                              
}

8
<img src="../template/edit.png" name="edit-save" onclick="this.src = '../template/save.png'" />

Inline JS không chính xác là một ý tưởng tuyệt vời.
Huỳnh

7

Trong trường hợp này, khi bạn muốn thay đổi srcgiá trị đầu tiên của phần tử, bạn không cần phải xây dựng hàm. Bạn có thể thay đổi quyền này trong phần tử:

<a href='#' onclick='this.firstChild.src="../template/save.png"')'>
  <img src="../template/edit.png" id="edit-save"/>
</a>

Bạn có một số cách để làm điều này. Bạn cũng có thể tạo một chức năng để tự động hóa quy trình:

function changeSrc(p, t) { /* where p: Parent, t: ToSource */
  p.firstChild.src = t
}

Sau đó bạn có thể:

<a href='#' onclick='changeSrc(this, "../template/save.png");'>
  <img src="../template/edit.png" id="edit-save"/>
</a>

6

Với đoạn trích bạn cung cấp (và không đưa ra giả định về cha mẹ của phần tử), bạn có thể có được một tham chiếu đến hình ảnh với

document.querySelector('img[name="edit-save"]');

và thay đổi src với

document.querySelector('img[name="edit-save"]').src = "..."

để bạn có thể đạt được hiệu quả mong muốn với

var img = document.querySelector('img[name="edit-save"]');
img.onclick = function() {
    this.src = "..." // this is the reference to the image itself
};

mặt khác, như được đề xuất khác, nếu bạn đang kiểm soát mã, tốt hơn là gán một idhình ảnh cho một tham chiếu getElementById(vì đó là phương pháp nhanh nhất để truy xuất một phần tử)


6

Cung cấp cho hình ảnh của bạn một id. Sau đó, bạn có thể làm điều này trong javascript của bạn.

document.getElementById("blaah").src="blaah";

Bạn có thể sử dụng phương thức ".___" để thay đổi giá trị của bất kỳ thuộc tính nào của bất kỳ thành phần nào.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.