You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

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>

额外优化建议

  1. 大幅简化判断逻辑:既然你的图片命名严格遵循1die.jpg2die.jpg的规则,完全可以用一行代码替代所有if-else分支:

    image.src = `${dieroll}die.jpg`;
    

    这样代码更简洁,也不容易出错。

  2. DOM加载顺序优化:我把script标签移到了body末尾,确保执行JS代码时,页面上的所有DOM元素(按钮、骰子图片等)都已经加载完成,避免出现无法获取元素的问题。

  3. 语法严谨性:建议用===(全等判断)代替==,避免类型转换带来的意外问题。

现在点击按钮试试,骰子图片应该能正常切换了!

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

火山引擎 最新活动