2017-05-08 57 views
0

我想通过使用Ajax从JavaScript更改img的源代码。 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

哦,我明白了!这样可行!感谢您的评论! –

相关问题