プログラムでimgタグのソースを変更する


242

JavaScriptを使用しsrcimgタグの属性を変更するにはどうすればよいですか?

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

最初は「../template/edit.png」というデフォルトのsrcがあり、「../ 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()内に挿入してみましたが、機能しますが、画像を2回クリックする必要があります

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

回答:


307

imgタグにIDを指定すると、次のことができます

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

16
入力の値の設定や画像srcの変更などの単純な場合(特に IDを持つ要素を使用している場合)、呼び出しは純粋なJS呼び出しよりもはるかに遅いため、jQueryを回避する必要があります
Brianリーシュマン

2
@ william44ismeと私たちのページは以前よりも遅く読み込まれます。jQueryは、同じコードを使用するWebサイトだけでなく、さらに便利だと思います。たとえば、上記のコードを30回または50回以上使用するとします。したがって、jQueryを使用する必要があります
Mahdi Jazini '30年

62

jqueryメソッドとjavascriptメソッドの両方を使用できます。たとえば、2つのイメージがある場合:

<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 2017年

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
同等の関数がJavascriptに直接組み込まれているときにjQueryを使用するように人々に伝えることは、意味がありません。すべてのJSの質問はjQueryの回答を必要としません。このソリューションは、バニラJSがすでに何ができるかについて人々が学ぶことを妨げる策です。
metaColin 2017年

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

「.___」メソッドを使用して、任意の要素の任意の属性の値を変更できます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.