Как получить доступ к переменной вновь созданного объекта? - PullRequest
0 голосов
/ 13 ноября 2018

Итак, у меня есть этот объект:

function User (theName, theEmail) {
  this.name = theName;
  this.email = theEmail;
  this.quizScores = [];
  this.currentScore = 0;
}

Я создаю нового пользователя, такого как var user1 = new User (theName.value, theEmail.value);, который находится внутри функции для прослушивателя событий, когда пользователь вводит свое имя и адрес электронной почты. Теперь есть вопросы и кнопка для следующего вопроса. Каждый раз, когда пользователь нажимает кнопку «Следующий вопрос», я хочу увеличить текущий рейтинг на единицу. Проблема в том, что он постоянно равен 0. Я делаю это так:

scoretag = document.createElement("p"); scoretag.innerHTML = user1.currentScore; body.appendChild(scoretag);

Прослушиватель событий и основной цикл:

for (var i = 0; i < theChoices[question1.theChoices].length; i++) {

    var arrayQ = document.createElement("p");
    arrayQ.innerHTML = theChoices[question1.theChoices][i];
    list.appendChild(arrayQ);

    var radio = document.createElement("input");
    radio.type = "radio";
    listOptions.appendChild(radio);

    dbtn.addEventListener("click", function() {
        //list.removeChild(arrayQ);
        //listOptions.removeChild
        list.removeChild(list.firstChild);
        list.removeChild(list.lastChild);
        user1.currentScore = user1.currentScore+1;
        scoretag = document.createElement("p");
        scoretag.innerHTML = user1.currentScore;
        body.appendChild(scoretag);

      })
  }

ОБНОВЛЕНИЕ: я поместил код для добавления дочернего элемента в элемент тела внутри цикла после увеличения оценки, но это приводит к тому, что многие числа печатаются на странице один за другим.

Но, как я уже сказал, когда я пытаюсь увеличить значение t на единицу при нажатии кнопки, на экране все равно отображается 0. Любая помощь?

1 Ответ

0 голосов
/ 13 ноября 2018

Каждый раз, когда вы увеличиваете счет, вам необходимо обновить HTML-элемент. Это идея:

function User (theName, theEmail) {
  this.name = theName;
  this.email = theEmail;
  this.quizScores = [];
  this.currentScore = 0;
}
var user1 = new User ("aa","bb");

function updateScore(){
    user1.currentScore++;
    document.getElementById('score').innerText = user1.currentScore;
}
<button id="btn" onclick="updateScore()">next</button>
<p id="score">0</p>
...