JavaScript球员年龄预测程序故障:输入36匹配首图无效
问题根源
你的代码中index初始值为0(对应第一张图片),但tahminEt函数里的年龄判断逻辑是从index === 1开始赋值的——第一张图的index是0,完全没进入正确的年龄赋值分支,直接走到else块返回错误提示,这就是输入36匹配第一张图时程序无正确响应的原因。
修复方案
将tahminEt函数中的年龄判断索引整体减1,让索引值与图片顺序一一对应(索引0对应第一张图):
function tahminEt() { var dogruYas; // 根据索引设置正确的年龄值(索引从0开始匹配第一张图) if (index === 0) { dogruYas = 36; // 梅西的年龄 } else if (index === 1) { dogruYas = 32; } else if (index === 2) { dogruYas = 38; } else if (index === 3) { dogruYas = 31; } else if (index === 4) { dogruYas = 36; } else { document.getElementById('sonuc').textContent = "很遗憾,您的预测错误。"; return; // 未定义正确年龄值时,退出函数 } // 以下代码保持不变 var tahmin = parseInt(document.getElementById('tahmin').value); if (isNaN(tahmin)) { document.getElementById('sonuc').textContent = "请输入有效的数字。"; } else { if (tahmin === dogruYas) { document.getElementById('sonuc').textContent = "恭喜!您的预测正确。"; show_slide(1); } else { document.getElementById('sonuc').textContent = "很遗憾,您的预测错误。"; } } }
额外优化建议
可以把年龄数据抽成数组替代冗余的if-else判断,后续新增图片时只需在数组中添加对应年龄,代码更简洁易维护:
function tahminEt() { // 用数组存储对应索引的正确年龄,索引0对应第一张图 const ageMap = [36, 32, 38, 31, 36]; const dogruYas = ageMap[index]; if (dogruYas === undefined) { document.getElementById('sonuc').textContent = "很遗憾,您的预测错误。"; return; } // 以下代码保持不变 var tahmin = parseInt(document.getElementById('tahmin').value); if (isNaN(tahmin)) { document.getElementById('sonuc').textContent = "请输入有效的数字。"; } else { if (tahmin === dogruYas) { document.getElementById('sonuc').textContent = "恭喜!您的预测正确。"; show_slide(1); } else { document.getElementById('sonuc').textContent = "很遗憾,您的预测错误。"; } } }
内容的提问来源于stack exchange,提问作者abdullahcancinar
相关产品推荐
相关产品推荐

