Как заставить оператор switch работать снова и снова, не застревая при загрузке? - PullRequest
0 голосов
/ 22 октября 2018

Оператор switch отлично работает, когда он находится в функции floor (), но затем он не запускается всякий раз, когда переменная изменяется вне функции, поэтому я хочу, чтобы оператор switch выполнялся все время.Пробовал использовать цикл while, но затем страница зависла при загрузке.Попытка поместить оператор switch вне функции, но тогда оператор switch не запускается?По крайней мере, я так думаю, потому что ничего не происходит.

var level = 0;

function floor() {
  level += 1;
  switch (level) {
    case 1:
      if (level = 1) {
        document.getElementById("floor1").style.backgroundColor = "black";
      }
      break;
    case 2:
      if (level = 2) {
        document.getElementById("floor2").style.backgroundColor = "black";
      }
      break;
    case 3:
      if (level = 3) {
        document.getElementById("floor3").style.backgroundColor = "black";
      }
      break;
    case 4:
      if (level = 4) {
        document.getElementById("floor4").style.backgroundColor = "black";
      }
      break;
    case 5:
      if (level = 5) {
        document.getElementById("floor5").style.backgroundColor = "black";
      }
    case 6:
      if (level = 6) {
        document.getElementById("floor6").style.backgroundColor = "black";
      }
      break;
    case 7:
      if (level = 7) {
        document.getElementById("floor7").style.backgroundColor = "black";
      }
      break;
    case 8:
      if (level = 8) {
        document.getElementById("floor8").style.backgroundColor = "black";
      }
      break;
    case 9:
      if (level = 9) {
        document.getElementById("floor9").style.backgroundColor = "black";
      }
      break;
    case 10:
      if (level = 10) {
        document.getElementById("floor10").style.backgroundColor = "black"
      }
    default:

  }
}

function game1true() {
  level += 1;
}
function game1false() {
  life -= 1;
}

Ответы [ 2 ]

0 голосов
/ 22 октября 2018

Почему бы вам не установить уровень var в функции пола?Это как пройти через конечный автомат:

var level = 0;

function floor(newLevel) {
  level = newLevel;
  switch (level) {
    case 1:
      if (level = 1) {
        document.getElementById("floor1").style.backgroundColor = "black";
      }
      break;
    case 2:
      if (level = 2) {
        document.getElementById("floor2").style.backgroundColor = "black";
      }
      break;
    case 3:
      if (level = 3) {
        document.getElementById("floor3").style.backgroundColor = "black";
      }
      break;
    case 4:
      if (level = 4) {
        document.getElementById("floor4").style.backgroundColor = "black";
      }
      break;
    case 5:
      if (level = 5) {
        document.getElementById("floor5").style.backgroundColor = "black";
      }
    case 6:
      if (level = 6) {
        document.getElementById("floor6").style.backgroundColor = "black";
      }
      break;
    case 7:
      if (level = 7) {
        document.getElementById("floor7").style.backgroundColor = "black";
      }
      break;
    case 8:
      if (level = 8) {
        document.getElementById("floor8").style.backgroundColor = "black";
      }
      break;
    case 9:
      if (level = 9) {
        document.getElementById("floor9").style.backgroundColor = "black";
      }
      break;
    case 10:
      if (level = 10) {
        document.getElementById("floor10").style.backgroundColor = "black"
      }
    default:

  }
}

function game1true() {
  floor(level + 1);
}
function game1false() {
  life -= 1;
}
0 голосов
/ 22 октября 2018

В данный момент вы присваиваете значения в каждом случае level с одним знаком равенства. В сравнениях используются операторы == и === .Например:

case 1:
  if (level === 1) {
    document.getElementById("floor1").style.backgroundColor = "black";
  }

Однако здесь нет необходимости использовать оператор switch, поскольку вы назначаете черный цвет во всех случаях.Просто используйте level в селекторе.

function floor() {
  level += 1;
  document.getElementById(`floor${level}`).style.backgroundColor = "black";
}

Шаблонные литералы

...