Javascript 单击图像不再显示不同的图像

Javascript 单击图像不再显示不同的图像,javascript,Javascript,以下代码将门图像网格添加到页面中,并在单击时将图像更改为怪物。如果出现袜子,我会在页面上添加一个按钮,允许用户再次播放。单击“再次播放”按钮后,页面将正确地将图像重置为doors。问题是这些门将不再显示怪物。我错过了什么?多谢各位 完整代码 /** *随机洗牌数组 * https://stackoverflow.com/a/2450976/1293256 *@param{Array}Array要洗牌的数组 *@return{String}无序数组中的第一项 */ var shuffle=函数(

以下代码将门图像网格添加到页面中,并在单击时将图像更改为怪物。如果出现袜子,我会在页面上添加一个按钮,允许用户再次播放。单击“再次播放”按钮后,页面将正确地将图像重置为doors。问题是这些门将不再显示怪物。我错过了什么?多谢各位

完整代码

/**
*随机洗牌数组
* https://stackoverflow.com/a/2450976/1293256
*@param{Array}Array要洗牌的数组
*@return{String}无序数组中的第一项
*/
var shuffle=函数(数组){
var currentIndex=array.length;
var时间值,随机指数;
//虽然还有一些元素需要洗牌。。。
而(0!==currentIndex){
//选择剩余的元素。。。
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
//并将其与当前元素交换。
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
};
//怪物和袜子
变量怪物=[
“怪物1”,
“怪物2”,
“怪物3”,
"怪物4",,
“怪物5”,
“怪物6”,
"怪物7",,
"怪物8",,
“怪物9”,
"怪物10",,
"怪物11",,
“袜子”
];
让计数=0;
const app=document.querySelector(“#app”);
const initGame=函数(){
洗牌(怪物);
app.innerHTML=''+monsters.map(m=>{
让html='';
返回html
}).连接(“”)+“”;
}
initGame();
const addButton=函数(){
app.innerHTML+=“再次播放”
document.querySelector('button')。addEventListener('click',()=>{
initGame();
计数=0;
});
};
const doors=Array.prototype.slice.call(document.querySelectorAll('.grid');
门。forEach((d,i)=>{
d、 addEventListener('单击',(e)=>{
d、 innerHTML='';
如果(怪物[i]=='sock'){
警报('您输了。如果您想再试一次,请再次单击播放');
addButton();
}否则{
计数++;
if(count==monsters.length-1){
警惕(“你赢了!!!”;
addButton();
}
}
});
});

怪物!

当主脚本执行时,您只附加了一次事件侦听器,然后在下一次播放时
initGame
仅创建没有侦听器的门,您应该将元素初始化放在
initGame
中,如下所示:

怪物!
/**
*随机洗牌数组
* https://stackoverflow.com/a/2450976/1293256
*@param{Array}Array要洗牌的数组
*@return{String}无序数组中的第一项
*/
var shuffle=函数(数组){
var currentIndex=array.length;
var时间值,随机指数;
//虽然还有一些元素需要洗牌。。。
而(0!==currentIndex){
//选择剩余的元素。。。
randomIndex=Math.floor(Math.random()*currentIndex);
currentIndex-=1;
//并将其与当前元素交换。
临时值=数组[currentIndex];
数组[currentIndex]=数组[randomIndex];
数组[randomIndex]=临时值;
}
返回数组;
};
//怪物和袜子
变量怪物=[
“怪物1”,
“怪物2”,
“怪物3”,
"怪物4",,
“怪物5”,
“怪物6”,
"怪物7",,
"怪物8",,
“怪物9”,
"怪物10",,
"怪物11",,
“袜子”
];
让计数=0;
const app=document.querySelector(“#app”);
const initGame=函数(){
洗牌(怪物);
app.innerHTML=''+monsters.map(m=>{
让html='';
返回html
}).连接(“”)+“”;
const addButton=函数(){
app.innerHTML+=“再次播放”
document.querySelector('button')。addEventListener('click',()=>{
initGame();
计数=0;
});
};
const doors=Array.prototype.slice.call(document.querySelectorAll('.grid');
门。forEach((d,i)=>{
d、 addEventListener('单击',(e)=>{
d、 innerHTML='';
如果(怪物[i]=='sock'){
警报('您输了。如果您想再试一次,请再次单击播放');
addButton();
}否则{
计数++;
if(count==monsters.length-1){
警惕(“你赢了!!!”;
addButton();
}
}
});
});
}
initGame();

谢谢syduki。成功了。