计数器值没有增加,值在 javascript 内保持不变

Counter value is not increasing, value remains constant in javascript

为什么我的变量pc_scoremy_score不增加?输出为 0。 我在代码中省略了另外两个 eventListener 格式的函数,但应该不会影响结果。 . 我为可运行代码编辑了 post。谢谢你。 感谢您查看我的问题。



<script>

    var options = ['rock','paper','scissors']
    let my_score = 0; 
    var pc_score = 0; 

    let computerChoice ;


    function computerSelection() {

         computerChoice = options[Math.floor(Math.random()*options.length)]
         return computerChoice;

    }


    var results = document.getElementById("result")
    document.getElementById("rock").addEventListener("click", ()=> {
        playerChoice=rock;
        computerSelection();
        if (computerChoice=='rock'){
             results.innerHTML="It is a tie";
        } else if (computerChoice=='paper'){
            results.innerHTML="It is a loss";
                 pc_score += 1;
        }else if (computerChoice=='scissors'){
            results.innerHTML="It is a win";
            my_score+= 1
        }

})

     const you = document.getElementById("You")
        you.innerHTML= my_score
    const computer = document.getElementById("Computer")
        computer.innerHTML=pc_score

  </script>

由于您在事件处理程序函数之外分配值,因此当点击发生时代码不会执行(而是这些代码在页面加载时使用初始值执行)。您必须更新事件处理函数中的 HTML。

此外,如果文本是纯文本(不是 htmlString),我建议您使用 innerTexttextContent

尝试以下操作:

var my_score = 0; 
var pc_score = 0;
const you = document.getElementById("You");
const computer = document.getElementById("Computer");
document.getElementById("scissors").addEventListener("click", ()=> {
    playerChoice=scissors;
    computerSelection();
    if (computerChoice == "rock"){
        results.textContent = "It is a loss";
        pc_score++;
    } else if (computerChoice == "paper"){
        results.textContent = "It is a win";
        my_score++;
    }else if (computerChoice=="scissors"){
        results.textContent = "It is a tie";
    }
    you.textContent = my_score;
    computer.textContent = pc_score;
});

您更新的是分数变量,而不是显示该分数的元素的 innerHTML。确实有一种 better/cleaner 方法可以做到这一点,但只需在更改值

后再次调用 computer.innerHTML=pc_scoreyou.innerHTML= my_score