@maksymNejmet

Не видит значение inputа в классе наследования.Как это решить?

Задача создать нечто на подобии поля чудес.
Есть класс DreamField:
class DreamField {
        constructor(word, tip) {
          this.Word = word;
          this.Tip = tip;
          this.forGuessLetterCount = word.length;
          if (!DreamField.counter) DreamField.counter = 0;
        }

        render(containerId) {
          this.container = document.getElementById(containerId);
          this.div1 = document.createElement("div");
          this.div1.innerText = `Подсказка: ${this.Tip}`;
          this.container.appendChild(this.div1);
          this.tdArray = [];
          var table = document.createElement("table");
          table.id = DreamField.counter++;
          table.border = "2px solid black";
          this.container.appendChild(table);
          var tr = document.createElement("tr");
          table.appendChild(tr);
          for (var i = 0; i < this.Word.length; i++) {
            var td = document.createElement("td");
            td.innerText = "*";
            tr.appendChild(td);
            this.tdArray.push(td);
          }
          this.input1 = document.createElement("input");
          this.input1.type = "text";
          this.input1.className = "txt";
          this.container.appendChild(this.input1);
        }
      }

Есть класс Roulette у которого класс DreamField выступает прототипом:
class Roulette extends DreamField {
        constructor(word, tip) {
          super(word, tip);
        }

        getRandom(min, max) {
          return Math.floor(Math.random() * (max - min + 1)) + min;
        }
        getRandomBonus() {
          this.bonus = ["300", "x3", "700", "0", "1000", "x2"];
          this.nowString = this.bonus[this.getRandom(0, this.bonus.length - 1)];

          return this.nowString;
        }
        result() {
          let rez = parseInt(this.input2.value);
          let m;
          switch (this.getRandomBonus()) {
            case "300":
              m = rez + 300;
              rez = m;
              break;
            case "x3":
              m = rez * 3;
              rez = m;
              break;
            case "700":
              m = rez + 700;
              rez = m;
              break;
            case "0":
              m = rez + 0;
              rez = m;
              break;
            case "1000":
              m = rez + 1000;
              rez = m;
              break;
            case "x2":
              m = rez * 2;
              rez = m;
              break;
          }
          return rez;
        }
        onButtonClick(event) {
          var letter = super.input1;
          if (super.Word.include(letter)) {
            let count = 0;
            for (var i = 0; i < super.Word.length; i++) {
              if (letter == super.Word[i]) {
                super.tdArray[i].innerText = letter;
                super.forGuessLetterCount--;
                count++;
              }
            }
            alert(`Вы угадали ${count} букв`);
            alert(`Вы выиграли ${this.getRandomBonus()}бонусов`);
            if (super.forGuessLetterCount == 0) {
              alert("Победа");
            }
          } else {
            alert("Нет такой буквы в этом слове");
          }
          super.input1.value = "";
        }

        render() {
          super.render("forGame");
          this.container = document.getElementById("forGame");
          var button = document.createElement("input");
          button.type = "button";
          button.value = "Проверить";
          button.onclick = this.onButtonClick.bind(this);
          this.container.appendChild(button);
          this.div2 = document.createElement("div");
          this.input2 = document.createElement("input");
          this.input2.type = "number";
          this.input2.readOnly = true;
          this.input2.className = "inp";
          this.input2.value = this.result();
          var span = document.createElement("span");
          span.innerText = "бонусов";
          this.div2.innerText = `У вас:`;
          this.div2.appendChild(this.input2);
          this.div2.appendChild(span);
          this.div2.style.paddingBottom = "20px";
          this.div2.style.paddingTop = "5px";
          this.container.appendChild(this.div2);
        }
      }

      function start() {
        var game = new Roulette("Портрет", "Висит в классе на стене");
        game.render("forGame");
        var game2 = new Roulette("HELLO", "Common greating");
        game2.render();
      }

Почему-то Roulette не видит значение inputа из DreamField?Как это решить?
  • Вопрос задан
  • 52 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы