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

Jam*_*lle 227 javascript html5 image src

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

<img src="../template/edit.png" name=edit-save/>
Run Code Online (Sandbox Code Playgroud)

起初我有一个默认的src是"../template/edit.png",我想用"../template/save.png"onclick更改它.

更新:这是我的html onclick:

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

和我的JS

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

我已经尝试在edit()中插入它,它可以工作,但需要单击图像两次

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

Mat*_*ias 292

给你的img标签一个id,然后就可以了

document.getElementById("imageid").src="../template/save.png";
Run Code Online (Sandbox Code Playgroud)

  • 对于简单的事情,例如设置输入的值或更改图像src(**特别**当你使用具有ID的元素时),你真的应该尝试避免使用jQuery,因为调用比纯粹慢得多JS电话 (15认同)
  • @william44isme,我们的页面加载速度会比以前慢。我认为 jQuery 仅适用于使用相同代码的网站,甚至更多。例如,如果我们使用上述代码超过 30 或 50 次。所以有必要使用jQuery (2认同)

小智 55

您可以同时使用jquery和javascript方法:例如,如果您有两个图像:

<img class="image1" src="image1.jpg" alt="image">
<img class="image2" src="image2.jpg" alt="image">
Run Code Online (Sandbox Code Playgroud)

1)Jquery方法 - >

$(".image2").attr("src","image1.jpg");
Run Code Online (Sandbox Code Playgroud)

2)Javascript方法 - >

var image = document.getElementsByClassName("image2");
image.src = "image1.jpg"
Run Code Online (Sandbox Code Playgroud)

对于这种类型的问题,jquery是一个简单的问题.

  • 海报从未表明对jQuery解决方案有任何兴趣.jQuery方法也不简单.不要用jQuery解决方案回答JS问题(除非帖子表明他们想要这样).它只会让试图学习JS的人感到困惑. (13认同)
  • getElementByClassName返回所有元素的集合.我们也需要提到元素的索引.var image = document.getElementsByClassName("image2")[0]; image.src ="image1.jpg" (6认同)

Ale*_*ano 35

如果您使用JQuery库,请使用以下指令:

$("#imageID").attr('src', 'srcImage.jpg');
Run Code Online (Sandbox Code Playgroud)

  • 问题不是要求jQuery答案,包含jQuery标记,或者建议使用jQuery是可以的. (21认同)
  • 当在Javascript中构建等效函数时,告诉人们使用jQuery是没有意义的.每个JS问题都不需要jQuery答案.这个解决方案是一个阻止人们了解香草JS已经可以做什么的kludge. (10认同)

Jam*_*lle 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";                              
}
Run Code Online (Sandbox Code Playgroud)


小智 8

<img src="../template/edit.png" name="edit-save" onclick="this.src = '../template/save.png'" />
Run Code Online (Sandbox Code Playgroud)

  • 内联 JS 并不是一个好主意。 (3认同)

Mar*_*rgo 7

在这种情况下,当您想要更改src元素的第一个值时,您无需构建函数.您可以在元素中更改此权限:

<a href='#' onclick='this.firstChild.src="../template/save.png"')'>
  <img src="../template/edit.png" id="edit-save"/>
</a>
Run Code Online (Sandbox Code Playgroud)

你有几种方法可以做到这一点.您还可以创建一个功能来自动化该过程:

function changeSrc(p, t) { /* where p: Parent, t: ToSource */
  p.firstChild.src = t
}
Run Code Online (Sandbox Code Playgroud)

然后你可以:

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


fca*_*ran 6

使用您提供的代码段(并且不会对元素的父元素进行假设),您可以获得对图像的引用

document.querySelector('img[name="edit-save"]');
Run Code Online (Sandbox Code Playgroud)

并用.更改src

document.querySelector('img[name="edit-save"]').src = "..."
Run Code Online (Sandbox Code Playgroud)

这样你就可以达到预期的效果

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

否则,正如其他建议的那样,如果您控制代码,最好为id图像指定a获取引用getElementById(因为它是检索元素的最快方法)


Ben*_*Ben 6

给你的形象一个id.然后你可以在你的JavaScript中执行此操作.

document.getElementById("blaah").src="blaah";
Run Code Online (Sandbox Code Playgroud)

您可以使用".___"方法更改任何元素的任何属性的值.