Javascript 未捕获类型错误:无法设置属性';src&x27;更改img的SRC时的空值

Javascript 未捕获类型错误:无法设置属性';src&x27;更改img的SRC时的空值,javascript,html,Javascript,Html,我想在我点击IMG时改变他的src。 这是我的部门: <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="onCh

我想在我点击IMG时改变他的src。 这是我的部门:

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

函数onChange(id){
变量名称=(“1200voc”);
对于(x=0;x
错误是:

未捕获的TypeError:更改img的src时无法将属性“src”设置为null


为什么不起作用?

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


将行更改为
var name=[“1200voc”]

查看您的代码,您可以:

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 names = ["1200voc"]

通过这种方式,您可以以所需的格式将
名称作为数组正确循环。

这是一个与php相关的问题吗?您正在调用
onclick=“onChangeProfession(This.id)”
但您的函数是
onChange
对我来说,听起来像是一个打字问题,如上所述。@FunkFortyNiner变量
名称
也有问题,该变量与函数名称无关。您正在迭代字符串
名称
中的所有字符,该字符串不是数组,
getElementById
找不到您的HTML元素,那么它们还需要更改HTML中
img
id
(它是
1200
,而不是
1200voc
var names = ["1200voc"]