เปลี่ยน src ของแท็ก img โดยทางโปรแกรม


242

ฉันจะเปลี่ยนsrcคุณสมบัติของimgแท็กโดยใช้จาวาสคริปต์ได้อย่างไร

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

ตอนแรกฉันมี src เริ่มต้นซึ่งก็คือ "../template/edit.png" และฉันต้องการเปลี่ยนด้วย "../template/save.png" onclick

อัปเดต: นี่คือ html ของฉัน onclick:

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

และ JS ของฉัน

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.onclick = function(){
       this.src = "../template/save.png";
    }

คำตอบ:


307

ใส่รหัสประจำตัว img ของคุณจากนั้นคุณก็ทำได้

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

16
สำหรับสิ่งง่าย ๆ เช่นการตั้งค่าอินพุตหรือเปลี่ยนรูปภาพ src ( โดยเฉพาะเมื่อคุณใช้องค์ประกอบที่มี ID) คุณควรพยายามหลีกเลี่ยง jQuery เนื่องจากการโทรช้ากว่าการโทร JS อย่างแท้จริง
Brian Leishman

2
@ william44isme และหน้าของเราจะโหลดช้ากว่าเดิม ฉันคิดว่า jQuery มีประโยชน์สำหรับเว็บไซต์ที่ใช้รหัสเดียวกันมากยิ่งขึ้น ตัวอย่างเช่นหากเราใช้โค้ดด้านบนมากกว่า 30 หรือ 50 ครั้ง ดังนั้นจึงจำเป็นต้องใช้ jQuery
Mahdi Jazini

62

คุณสามารถใช้ทั้งวิธี jquery และ javascript: หากคุณมีภาพสองภาพ:

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

1) วิธีการ Jquery->

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

2) วิธี Javascript->

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

สำหรับ jquery ของปัญหาประเภทนี้เป็นวิธีที่ใช้ง่าย


21
โปสเตอร์ไม่เคยแสดงความสนใจใด ๆ ในโซลูชัน jQuery และไม่ใช่วิธี jQuery ที่ง่ายกว่า อย่าตอบคำถาม JS ด้วยโซลูชั่น jQuery (เว้นแต่โพสต์ระบุว่าพวกเขาต้องการ) มันแค่สับสนคนที่พยายามเรียนรู้ JS
metaColin

6
getElementByClassName ส่งคืนคอลเล็กชันขององค์ประกอบทั้งหมด เราต้องพูดถึงดัชนีขององค์ประกอบด้วย var image = document.getElementsByClassName ("image2") [0]; image.src = "image1.jpg"
Tushar Gaurav

34

ถ้าคุณใช้ไลบรารี JQuery ให้ใช้คำสั่งนี้:

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

24
คำถามไม่ขอคำตอบ jQuery รวมแท็ก jQuery หรือแนะนำว่าไม่ควรใช้ jQuery
Popnoodles

10
การบอกผู้ใช้ jQuery เมื่อฟังก์ชั่นที่เทียบเท่าถูกสร้างขึ้นใน Javascript ไม่เข้าท่า ทุกคำถามของ JS ไม่ต้องการคำตอบ jQuery วิธีนี้เป็น kludge ที่ป้องกันไม่ให้คนเรียนรู้เกี่ยวกับสิ่งที่วานิลลา JS สามารถทำได้
metaColin

27

ตอนนี้มันโอเค

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";                              
}


7

ในกรณีนี้เมื่อคุณต้องการเปลี่ยนsrcค่าแรกขององค์ประกอบของคุณคุณไม่จำเป็นต้องสร้างฟังก์ชัน คุณสามารถเปลี่ยนสิทธิ์นี้ในองค์ประกอบ:

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

คุณมีหลายวิธีในการทำเช่นนี้ คุณยังสามารถสร้างฟังก์ชั่นเพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติ:

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

จากนั้นคุณสามารถ:

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

6

ด้วยตัวอย่างที่คุณให้ (และไม่มีการตั้งสมมติฐานเกี่ยวกับผู้ปกครองขององค์ประกอบ) คุณสามารถรับการอ้างอิงถึงภาพด้วย

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

และเปลี่ยน src ด้วย

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

เพื่อให้คุณสามารถบรรลุผลตามที่ต้องการด้วย

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

หากคุณเป็นผู้ควบคุมรหัสจะเป็นการดีกว่าถ้าจะกำหนดidให้รูปภาพอ้างอิงรับgetElementById(เนื่องจากเป็นวิธีที่เร็วที่สุดในการดึงองค์ประกอบ)


6

ตั้งรหัสให้กับรูปภาพของคุณ จากนั้นคุณสามารถทำได้ในจาวาสคริปต์ของคุณ

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

คุณสามารถใช้วิธี ".___" เพื่อเปลี่ยนค่าของแอตทริบิวต์ขององค์ประกอบใด ๆ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.