javascript - 刷新时有时无法加载页面

标签 javascript function

我正在制作一个简单的剪刀石头布游戏。有时当我刷新页面时什么也没有发生。发生这种情况时,不会显示任何错误。我尝试在像 w3schools 这样的在线编辑器上运行这段代码,但结果是一样的。是什么导致了这个问题?

这是我的代码:

<body onload="game()">
    <script>
        function game(playerItem, computerSelection) {
        
            function computerSelection() {
                var arr = ["rock", "paper", "scissors"];
                var computerSelection = arr[Math.floor(Math.random() * 3)];
                return computerSelection;
            }
        
            var playerItem = "rock";
        
            if (playerItem == "rock" & computerSelection() == "paper") {
                document.write(rockVSpaper);
                return;
            };
            if (playerItem == "rock" & computerSelection() == "scissors") {
                document.write(rockVSscissors);
                return;
            };
            if (playerItem == "rock" & computerSelection() == "rock") {
                document.write(rockVSrock);
                return;
            };
        }
        var rockVSpaper = "You lose! The computer's paper wraps your rock.";
        var rockVSscissors = "You won! Your rock make the computer's scissors blunt.";
        var rockVSrock = "Tie! A Rock doesn't do anything with another rock.";
    </script>
</body>

最佳答案

它有时不起作用,因为您在 if 语句的条件中运行了三次 computerSelection()。这意味着每次检查时,都会生成一个新的随机计算机选择,这意味着所有三个 if 条件都可能等于 false

要解决这个问题,您应该运行一次 computerSelection() 并将它生成的内容存储在一个变量中,然后在您的 if 语句中使用它。像这样:

var playerItem = "rock";
var computerItem = computerSelection();

if (playerItem == "rock" && computerItem == "paper") {
    document.write(rockVSpaper);
    return;
};
// The rest of the if statements and code...

这是一个 codepen应用上述修改后。

关于javascript - 刷新时有时无法加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48136328/

相关文章:

javascript - Firebase云函数不返回值,返回数据始终为null

javascript - 销毁和重新加载后无法扩展行;无法读取未定义的属性 '_detailsShow';

javascript - 从内部引用函数(如 JavaScript 中的 arguments.callee)?

javascript - Angular js中点击刷新按钮时无法清除详细信息?

javascript - 模拟 delay() RxJS 与 Jest

javascript - 仅在文档点击时触发一次

c - 字符串操作(具有相同输入的变量输出)

javascript - Onclick 函数在加载事件监听器内时不会被调用

c++ - 成员函数定义

javascript - 使用箭头函数和 addEventListener 更改元素的字体大小和文本颜色