You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现点击不同图片返回对应唯一值,用于蒙提霍尔模拟器开发

解决方法

你只需要修改JS代码即可实现需求,无需调整现有HTML、CSS逻辑:

// ELEMENT VARIABLES
const instructions = document.getElementById('instructions');
const startGameButton = document.getElementById('startGameButton');
const door1 = document.getElementById('door1');
const door2 = document.getElementById('door2');
const door3 = document.getElementById('door3');
// 把三个门存为数组方便统一绑定事件
const allDoors = [door1, door2, door3];

// 全局变量:获奖门、用户选中的门
let prizeDoor = Math.floor(Math.random() * 3 + 1);
let userSelectedDoor = null;


// LOADING ALL EVENT LISTENERS
function loadEventListeners() {
    startGameButton.addEventListener('click', removeInstructionsAndButtonAndMakeDoorsAppear);
    // 统一给三个门绑定点击事件
    allDoors.forEach(door => {
        door.addEventListener('click', onDoorClick)
    })
}

loadEventListeners();

function removeInstructionsAndButtonAndMakeDoorsAppear() {
    instructions.innerHTML = '';
    door1.style.display = 'block';
    door2.style.display = 'block';
    door3.style.display = 'block';
}

// 新增:门点击事件处理逻辑
function onDoorClick(e) {
    // 从点击元素的id中提取门编号,转换为数字
    userSelectedDoor = Number(e.target.id.replace('door', ''));
    // 测试打印,确认取值正确,后续可以替换为你自己的业务逻辑
    console.log('用户选中的门编号:', userSelectedDoor);
}

如果想要更规范的实现,也可以给三个门的img标签增加自定义data属性,后续修改id命名也不会影响取值逻辑:

<img src="img/doors.jpg" class="door door-styling" id="door1" data-door-num="1">
<img src="img/doors.jpg" class="door door-styling" id="door2" data-door-num="2">
<img src="img/doors.jpg" class="door door-styling" id="door3" data-door-num="3">

对应的点击事件取值逻辑改为:

function onDoorClick(e) {
    userSelectedDoor = Number(e.target.dataset.doorNum);
}

内容的提问来源于stack exchange,提问作者Nellington

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 23:12:03