Значение счетчика не увеличивается, значение остается постоянным в javascript - PullRequest
1 голос
/ 15 января 2020

почему моя переменная pc_score и my_score не увеличивается? Вывод равен 0. У меня есть еще две функции формата eventListener, которые я пропустил в коде, но это не должно влиять на результаты. , Я отредактировал пост для запуска кода. Спасибо. Спасибо за просмотр моего вопроса.



<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>

Ответы [ 2 ]

1 голос
/ 15 января 2020

Поскольку вы присваиваете значение вне функции обработчика событий, этот код не выполняется при щелчке (вместо этого этот код выполняется при загрузке страницы с начальным значением). Вам необходимо обновить HTML внутри функции обработчика событий.

Также я предлагаю вам использовать innerText или textContent, если текст является простым текстом (не htmlString).

Попробуйте следующее:

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;
});
0 голосов
/ 15 января 2020

Вы обновляете переменные оценки, но не внутренние HTML элементов, отображающих эту оценку. Конечно, есть лучший / более чистый способ сделать это, но просто позвоните computer.innerHTML=pc_score и you.innerHTML= my_score снова после изменения значения

...