【问题标题】:Programmatically change the src of an img tag以编程方式更改 img 标签的 src
【发布时间】:2012-07-28 04:10:48
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: javascript html image src


    【解决方案1】:

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

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

    【讨论】:

    • 对于简单的事情,例如设置输入值或更改图像 src(特别,当您使用具有 ID 的元素时),您真的应该尽量避免使用 jQuery , 因为调用比纯 JS 调用慢很多
    • @william44isme 我们的页面将比以前加载得慢。我认为 jQuery 仅对使用相同代码的网站非常有用。例如,如果我们使用上述代码超过 30 或 50 次。所以有必要使用jQuery
    【解决方案2】:

    您可以同时使用 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 使用起来很简单。

    【讨论】:

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

    如果您使用 JQuery 库,请使用以下说明:

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

    【讨论】:

    • 该问题不要求 jQuery 答案,包含 jQuery 标签,或建议使用 jQuery 即可。
    • 在 Javascript 中内置等效函数时告诉人们使用 jQuery 是没有意义的。每个 JS 问题都不需要 jQuery 答案。这个解决方案是一个阻碍人们了解 vanilla JS 已经可以做什么的工具。
    【解决方案4】:

    现在好了

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

    【讨论】:

      【解决方案5】:

      给你的图片一个id。然后你可以在你的javascript中做到这一点。

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

      您可以使用此语法来更改任何元素的任何属性的值。

      【讨论】:

        【解决方案6】:
        <img src="../template/edit.png" name="edit-save" onclick="this.src = '../template/save.png'" />
        

        【讨论】:

        • 内联 JS 并不是一个好主意。
        【解决方案7】:

        使用您提供的 sn-p(并且不对元素的父级做出假设),您可以通过

        获得对图像的引用
        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 获取引用(因为这是检索元素的最快方法)

        【讨论】:

          【解决方案8】:

          在这种情况下,由于您要更改元素的第一个值的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>
          

          【讨论】:

            【解决方案9】:

            也许是因为你有一个标签,就像标签的父级一样。 这就是为什么你必须点击两次图像。

            对我来说,解决方案是这样的: http://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_lightbulb

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-10-15
              • 2011-11-28
              • 1970-01-01
              • 1970-01-01
              • 2018-10-22
              相关资源
              最近更新 更多