2017-05-08 1 views
0

imgのソースをJavaScriptからAjaxを使用して変更したいと思います。 imgタグにIDやクラスがないため、imgの選択方法とsrcの変更方法を理解できません。どうやってやるの?私はHTML(提供されているので変更できません)とJavaScriptの一部を入れています。ありがとう。JavaScriptからクラス/ IDを持たない画像のsrcを変更する方法

HTML:

<div class="moves"> 
      <button> 
      <span class="move">Move Name Here</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">Move Name Here</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">Move Name Here</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
      <button> 
      <span class="move">Move Name Here</span> <span class="dp"></span> 
      <img src="icons/fighting.jpg" alt="Pokemon move" /> 
      </button> 
</div> 

Javascriptを:

 var moveArr = data.moves; 
     var moves = document.getElementsByClassName("move"); 
     for(var x=0; x < data.moves.length; x++){ 
      moves[x].innerHTML = moveArr[x].name; 
      img[x].src = "icons\/" + moveArr[x].type + ".jpg"; // I cannot write this part correctly. 
     } 
+0

どの画像を変更しますか?あなたはhtmlをまったく変更できますか? – gaganshera

+0

私はhtmlをまったく変更できません。そして、私はすべての画像を変更したい –

答えて

0

うん、あなたはのSRCを変更しようとしている画像への参照を持っていません。私はそうするでしょう:

var moveArr = data.moves; 
var moves = document.getElementsByClassName("move"); 
for(var x=0; x < data.moves.length; x++){ 
    moves[x].innerHTML = moveArr[x].name; 
    var img = moves[x].parentNode.getElementsByTagName('img')[0]; 
    img.src = "icons\/" + moveArr[x].type + ".jpg"; 
} 

あなたのページのレイアウトが変更された場合、このコードを変更する必要があります。あなたが今持っているもののために働かなければならない。

+0

ありがとうございました。このコードは正しく動作します。なぜ私はgetElementsByTagName( 'img')の後ろに[0]を入れなければならないのですか?それは何を意味しますか? –

+0

任意の要素内に複数のimgが存在する可能性があるため、getElementsByTagNameはノードリストを返します。だから私たちはそのリスト(すなわち[0])の最初のイメージを使用しています。 – James

+0

ああ私はそれを得た!コメントしてくださってありがとうございます! –

0

spanimgで成功した(あなたが投稿したコードからのように見えるように)そう.move項目や画像の同じ数がありますされている場合は - そして、彼らは一致 - あなたはDOM images collectionを使用することができます次のように各画像のsrcをターゲットに設定します。

var moveArr = data.moves; 
    var moves = document.getElementsByClassName("move"); 
    for(var x = 0; x < data.moves.length; x++){ 
     moves[x].innerHTML = moveArr[x].name; 
     document.images[x].src = "icons\/" + moveArr[x].type + ".jpg"; 
    } 
+0

ご意見ありがとうございます。しかし、それは正しく機能しませんでした。私はHTMLの残りの部分に他のimgタグがあり、他の画像もあなたの提案されたコードから変更されていると思います... "移動"クラスの下で画像を変更したいです –

+0

@AndyAndersonああ大丈夫です。ここに記載されている画像の前に画像がいくつあるか分かっている場合は、その番号を追加してください。例えば、変更したい画像の前に5枚の画像がある場合は、代わりに 'document.images [x] .src'を' document.images [5 + x] .src'に変更してください。 – freginold

+0

ああ私はそれを得た!それは動作します!あなたのコメントをありがとう! –

関連する問題