未捕获的TypeError:无法设置属性' src'改变img的SRC时为null

时间:2018-01-19 14:07:20

标签: javascript html

我想点击IMG时更改他的src。 这是我的div:

<div class="character">
<input id="1200" name="vocation_select" type="radio" value="1200" style="display: none" ></input>
<label id="label_profesji" for="1200">
    <img id="1200voc" onclick="onChange(this.id)" src="engine/images/proffesion/1200voc.png" width="34px" height="34px" style="cursor: pointer" title="Bardock"> 
</label>

和javascript:

<script>
    function onChange(id){
        var names = ("1200voc");
        for (x = 0; x < names.length; x++) {
            var prof = document.getElementById(names[x]);
            prof.src = 'engine/images/proffesion/' + names[x] + '.png';  
        }

        var prof = document.getElementById(id);
        prof.src = 'engine/images/proffesion/' + prof.id + '_s.png';     
    }; 
</script>

错误是:

  

未捕获的TypeError:无法设置属性&#39; src&#39;更改img的SRC时为null

为什么这不起作用?

2 个答案:

答案 0 :(得分:0)

查看您的代码:

var names = ("1200voc")

然后尝试以数组形式访问names

所以这个:

for (x = 0; x < names.length; x++) {
    var prof = document.getElementById(names[x]);
    prof.src = 'engine/images/proffesion/' + names[x] + '.png';  
}

表示names[0]将返回1names[1]将返回2names[2]将返回0,依此类推...... < / p>

现在没有ID为12的元素......所以当你这样做时:

var prof = document.getElementById(names[x]);

你得到错误。

你想要的是一系列名字,所以你应该做的是:

var names = ["1200voc"]

通过这种方式,您可以以所需的格式正确地遍历names数组。

答案 1 :(得分:-1)

名称不是数组,而是字符串。

将您的行更改为var names = ["1200voc"];