Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 动态添加图像的onclick功能无法正常工作_Javascript_Html_Dom - Fatal编程技术网

Javascript 动态添加图像的onclick功能无法正常工作

Javascript 动态添加图像的onclick功能无法正常工作,javascript,html,dom,Javascript,Html,Dom,我给每个表添加了5颗星&根据数组长度增加了表的数量。我写了一个点击功能,将greystar_图像改为greenstar_图像。当我单击任何行中的任何星形图像时,只有第一个表中的星形图像正在更改。我需要的是,当我单击特定行中的一个星号时,只有该行中的星号图像应该更改 我的代码是 function init() { var Ques = ['a','b','c','d','e']; var container = document.getElementById('di

我给每个表添加了5颗星&根据数组长度增加了表的数量。我写了一个点击功能,将greystar_图像改为greenstar_图像。当我单击任何行中的任何星形图像时,只有第一个表中的星形图像正在更改。我需要的是,当我单击特定行中的一个星号时,只有该行中的星号图像应该更改

我的代码是

function init() {
        var Ques = ['a','b','c','d','e'];
        var container = document.getElementById('divStars');

        for(var i=0;i<Ques.length;i++){     
            var Table = document.createElement('table');
            Table.className = 'Table';
            var Row = document.createElement('tr');
            Row.className = 'Row';
            var Column = document.createElement('td');
            var x =document.createTextNode(Ques[i]);
            Column.appendChild(x);

            for(j=1;j<6;j++){   
                var starinput = document.createElement('input');
                starinput.type = 'image';
                starinput.id = j;
                starinput.class = 'imgclass';
                starinput.src="Images/greystar.png";
                Column.appendChild(starinput);
                starinput.onclick = function(){ 
                    ChangeState (this.id);
                    function ChangeState (index) { 
                        var colStars = divStars.getElementsByTagName ("input"); 
                        var k=0;
                        for(k=0;k <colStars.length;k++) { 
                            colStars [k]. src = (k <index? "Images/greenstar.png": "Images/greystar.png"); 
                        } 
                    }
                }
            }

            Row.appendChild(Column);
            Table.appendChild(Row);
            container.appendChild(Table);
        }
    }
    window.onload = init
</script></head>

<body><div id="divStars"> </div></body>
函数init(){
变量Ques=['a','b','c','d','e'];
var container=document.getElementById('divStars');

for(var i=0;i
divStars
包含代码中的所有
输入
,因此您正在对其进行全部更改。您只需在单击的
输入
的父元素中获取
输入
s,即可更改一行中的输入。类似如下:

starinput.onclick = function(){ 
    ChangeState (this.id, this.parentElement);
    function ChangeState (index, parent) { 
        var colStars = parent.getElementsByTagName ("input");
                    ...
    }
}

.

divStars
包含所有的“starImages”?如果是这样,您需要在
ChangeState()
函数中将
divStars
更改为
此.parentElement
。@Teemu:它仍然不工作