【问题标题】:How to change the src of images which has no class/ID from JavaScript如何从 JavaScript 更改没有类/ID 的图像的 src
【发布时间】:2017-05-09 04:12:53
【问题描述】:

我想使用 Ajax 从 JavaScript 更改 img 的来源。而img 标签没有任何 ID 或类,我不知道如何选择img 以及如何更改src。我怎样才能做到这一点?我把我的 HTML 的一部分(它提供了,所以我不能修改)和我的 JavaScript 的一部分。谢谢。

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

【问题讨论】:

  • 您要更改哪个图像?你能修改html吗?
  • 我根本无法修改 html。我想改变所有的图像

标签: javascript html ajax src


【解决方案1】:

是的,您没有对要更改其 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";
}

如果您的页面布局发生变化,您可能需要更改此代码。不过,应该为你现在拥有的东西工作。

【讨论】:

  • 非常感谢。此代码正常工作。为什么getElementsByTagName('img')后面要加[0],是什么意思??
  • 因为任何给定元素内都可以有多个 img,所以 getElementsByTagName 返回一个节点列表。所以我们使用该列表中的第一张图片(即 [0])。
  • 哦,我明白了!谢谢你们的cmets!
【解决方案2】:

如果每个span 后面都有一个img(因为它似乎来自您发布的代码),那么.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";
    }

【讨论】:

  • 感谢您的 cmets。但它没有正常工作。我认为那是因为我的 HTML 的其余部分中有其他 img 标签,并且其他图像也从您建议的代码中更改...我只想在“move”类下更改图像
  • @AndyAnderson 好吧。如果您知道在此处提到的图像之前有多少图像,只需添加该数字即可。例如,如果您要更改图像前面的 5 个图像,请将 document.images[x].src 改为 document.images[5 + x].src
  • 哦,我明白了!这样可行!感谢您的评论!
猜你喜欢
  • 2012-08-09
  • 2019-05-25
  • 2015-11-15
  • 1970-01-01
  • 2021-03-28
  • 2023-03-27
  • 1970-01-01
  • 2019-03-15
  • 1970-01-01
相关资源
最近更新 更多