以编程方式更改img标签的src


242

如何使用javascript 更改标签的src属性img

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

首先,我有一个默认的src,它是“ ../template/edit.png”,我想用onclick来更改它。“ ../ template / save.png”。

更新:这是我的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;
    }
}

我尝试将其插入edit()内,它可以工作,但需要单击两次图像

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

Answers:


307

给您的img标签添加一个ID,然后就可以

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

16
对于简单的事情,例如设置输入值或更改图像src(特别是在使用具有ID的元素时),您真的应该避免使用jQuery,因为该调用比纯JS调用慢得多
Brian利什曼2015年

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方法也不简单。不要用jQuery解决方案回答JS问题(除非帖子表明他们想要这样做)。它只会使尝试学习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 2015年

10
当在Javascript中内置等效功能时,告诉人们使用jQuery是没有意义的。每个JS问题都不需要jQuery答案。此解决方案使人们无法了解香草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

给您的图片一个ID。然后,您可以在JavaScript中执行此操作。

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

您可以使用“ .___”方法来更改任何元素的任何属性的值。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.