İmg etiketinin src'sini programlı olarak değiştirme


243

Javascript kullanarak srcbir imgetiketin niteliğini nasıl değiştirebilirim ?

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

ilk başta "../template/edit.png" olan bir varsayılan src var ve "../template/save.png" onclick ile değiştirmek istedim.

GÜNCELLENDİ: İşte benim html onclick:

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

ve JS'm

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

Bunu edit () içine eklemeyi denedim, işe yarıyor ama görüntüyü iki kez tıklamanız gerekiyor

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

Yanıtlar:


307

İmg etiketinize bir kimlik verin, ardından

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

16
Bir girişin değerini ayarlamak veya bir görüntü src (değiştirme gibi basit şeyler için especial Eğer kimliklerine sahip elemanlar kullanırken), gerçekten çağrı çok yavaş saf JS çağrısı daha olduğundan, jQuery önlemek için çalışmalısınız
Brian Leishman

2
@ william44isme ve sayfamız eskisinden daha yavaş yüklenecek. jQuery sadece aynı kodu kullanan web siteleri için çok daha yararlı olduğunu düşünüyorum. örneğin, yukarıdaki kodu 30 veya 50'den fazla kullanırsak. bu yüzden jQuery
Mahdi Jazini

63

Hem jquery hem de javascript yöntemini kullanabilirsiniz: örneğin iki görüntünüz varsa:

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

1) Jquery Yöntemi->

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

2) Javascript Yöntemi->

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

Bu tür bir sorun için jquery kullanımı basit olanıdır.


21
Poster hiçbir zaman bir jQuery çözümüne ilgi göstermedi. JQuery yöntemi de daha basit değildir. JS sorularını jQuery çözümleriyle yanıtlamayın (gönderi istediklerini belirtmedikçe). Sadece JS öğrenmeye çalışan insanların kafasını karıştırıyor.
metaColin

6
getElementByClassName tüm öğelerin koleksiyonunu döndürür. Öğenin dizininden de bahsetmeliyiz. var image = document.getElementsByClassName ("image2") [0]; image.src = "image1.jpg"
Tushar Gaurav

35

JQuery kitaplığını kullanıyorsanız bu talimatları kullanın:

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

24
Soru, bir jQuery yanıtı istemez, bir jQuery etiketi içermez veya jQuery kullanmanın uygun olmadığını önerir.
Popnoodles

10
Eşdeğer bir işlev Javascript'te yerleşik olarak kullanıldığında insanlara jQuery kullanmalarını söylemek mantıklı değildir. Her JS sorusu jQuery yanıtı gerektirmez. Bu çözüm, insanların vanilya JS'nin zaten neler yapabileceğini öğrenmesini engelleyen bir çamurdur.
metaColin

27

şimdi tamamdır

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

Bu durumda, srcöğenizin ilk değerini değiştirmek istediğinizde , bir işlev oluşturmanıza gerek yoktur. Bunu, öğede değiştirebilirsiniz:

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

Bunu yapmanın birkaç yolu var. İşlemi otomatikleştirmek için bir işlev de oluşturabilirsiniz:

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

O zaman yapabilirsin:

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

6

Sağladığınız snippet ile (ve öğenin ebeveynleri hakkında varsayımlarda bulunmadan) ile görüntüye referans alabilirsiniz.

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

ve src'yi

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

böylece istediğiniz efekti elde edebilirsiniz

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

aksi takdirde, diğer önerildiği gibi, kodu kontrol ediyorsanız id, resme bir referans almak için bir görüntü atamak daha iyidir getElementById(çünkü bir öğeyi almak için en hızlı yöntemdir)


6

Resminize bir kimlik verin. Sonra bunu javascript'inizde yapabilirsiniz.

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

Herhangi bir öğenin herhangi bir özelliğinin değerini değiştirmek için ".___" yöntemini kullanabilirsiniz.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.