HTML骰子网站图片切换失效求助:点击按钮后图片不更新
解决骰子图片无法切换的问题
嘿,折腾5小时确实够闹心的!咱们直接抓核心问题:你的JavaScript代码里的if-else语法结构完全错误,这导致浏览器无法正确执行roll()函数,自然没法切换骰子图片。
问题根源
你原本的多分支判断写法不符合JS语法规范:每一个else后面直接跟着另一个if块,还重复写了else,浏览器会抛出语法错误,函数根本运行不起来。举个例子,你这段代码:
} else { if (dieroll ==2){ image.src="2die.jpg"; } } else {
这里的第二个else是完全多余且非法的——一个else只能对应一个if,多分支判断应该用else if来串联。
修正后的完整代码
我帮你把语法错误修复,同时优化了代码结构:
<html> <head> <h1>Dice roller</h1> <p>Roll a dice to receive a reward based on your roll.</p> </head> <body> <button onclick="roll()">Click me to roll</button> <h2>The value for your roll is: <div id="result"></div></h2> <div> <img src="https://th.bing.com/th/id/OIP.a84-UisZ9wZzwQZdXumxTgHaHV?w=174&h=180&c=7&o=5&pid=1.7" id="dice" width="100" height="100"> </div> <script> function getRandomInt(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } var dieroll = 0; function roll(){ var image = document.getElementById("dice"); dieroll = getRandomInt(1,6); document.getElementById("result").innerHTML = dieroll; // 修正后的多分支判断 if (dieroll === 1) { image.src = "1die.jpg"; } else if (dieroll === 2) { image.src = "2die.jpg"; } else if (dieroll === 3) { image.src = "3die.jpg"; } else if (dieroll === 4) { image.src = "4die.jpg"; } else if (dieroll === 5) { image.src = "5die.jpg"; } else if (dieroll === 6) { image.src = "6die.jpg"; } } </script> </body> </html>
额外优化建议
大幅简化判断逻辑:既然你的图片命名严格遵循
1die.jpg、2die.jpg的规则,完全可以用一行代码替代所有if-else分支:image.src = `${dieroll}die.jpg`;这样代码更简洁,也不容易出错。
DOM加载顺序优化:我把script标签移到了body末尾,确保执行JS代码时,页面上的所有DOM元素(按钮、骰子图片等)都已经加载完成,避免出现无法获取元素的问题。
语法严谨性:建议用
===(全等判断)代替==,避免类型转换带来的意外问题。
现在点击按钮试试,骰子图片应该能正常切换了!
内容的提问来源于stack exchange,提问作者TardiCoder




