2017-05-08 32 views
-1

我想通过使用Ajax来更改img。但控制台显示“无法设置属性'undefined”,并且innerHTML无法正常工作。我如何更改img其中有type类?如何使用innerHTML改变一个类的img

 var pokeIcon = document.getElementsByClassName("type"); 
     for(var k=0; k < pokeIcon.length; k++){ 
      pokeIcon[i].innerHTML = "<img src=\"" + data.images.typeIcon + "\">"; 
     } 

HTML写在下面; (有其脑水肿类type几个元素,所以我不能使用id这一点。

<img src="icons/normal.jpg" alt="type" class="type"/> 
+0

您希望'.src'不是'.innerHTML'。如果你想改变图像路径。 – Albzi

+0

这是因为你有一个错字。用'k'替换'i',然后你就会得到这个元素。 – Gil

回答

2

两个问题:

  1. 你的循环计数器k,但你使用i在分配

  2. 更改图像的src,你改变src,你不使用innerHTML

所以:

var pokeIcon = document.getElementsByClassName("type"); 
for(var k=0; k < pokeIcon.length; k++){ 
    pokeIcon[k].src = data.images.typeIcon; 
    // ------^--^^^^^^^^^^^^^^^^^^^^^^^^^^ 
} 

您问题的标题是

如何使用innerHTML改变IMG与类

...因此,如果这是真的问题,答案是:你不能合理地做到这一点。您必须设置父元素的innerHTML,这意味着销毁并重新创建其所有后代元素(如果有的话,它们将删除它们的事件处理程序)。

您可以使用outerHTML来完成,但src是最好的方法。

+0

另外k和src是错字型错误 – mplungjan

+0

谢谢你的帮助!我找到了你的答案! – Tak

1

你必须写“K”而不是“我”

1

不要使用innerHTML的图像。 使用的.src的一样。

pokeIcon[k].src = data.images.typeIcon; 
+0

感谢编辑@mplungjan ... – ivp

1

您可以使用查询选择和src属性。

var images = document.querySelectorAll('img.type'); 
var i = 0, limit = images.length; 
for(i=0; i<limit; i++){ 
    images[i].src = data.images.typeIcon; 
} 
1

您可以简单地设置src属性,无论如何,问题是您正在使用变量k作为循环,变量i设置图像源。

要设置图像的SRC,请参见下面请:

var img = document.getElementsByClassName("type"); 
 
for(var k=0; k < img.length; k++){ 
 
    img[k].src = "http://www.maglioccola.com/images/stackoverflow.png"; 
 
}
<img class="type">

我希望它可以帮助你,再见。