@emilkarussia

Почему при помощи if работает, а при помощи switch нет?

Почему при помощи if работает:
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>Выбор</title>
  </head>
  <body id="0">
    <input type="button" value="1" id="decis1" onclick="numb(1);">
    <input type="button" value="2" id="decis2" onclick="numb(2);">
    <script>
      function numb(decis) {
        if (curScene == 0) {
          if (decis == 1) {
           alert("hello1")
          }
          else {
          	alert("hello2")
          }
        }
      }
      var curScene = document.getElementById("0").id;
    </script>
  </body>
</html>

А при switch нет?
<!DOCTYPE HTML>
<html>
  <head>
    <meta charset="utf-8">
    <title>Выбор</title>
  </head>
  <body id="0">
    <input type="button" value="1" id="decis1" onclick="numb(1);">
    <input type="button" value="2" id="decis2" onclick="numb(2);">
    <script>
      function numb(decis) {
        switch (curScene) {
        case 0: 
          if (decis == 1) {
           alert("hello1")
          }
          else {
           alert("hello2")
          }
          break;
        }
      }
      var curScene = document.getElementById("0").id;
    </script>
  </body>
</html>
  • Вопрос задан
  • 203 просмотра
Решения вопроса 1
Замените число 0 на строку '0'
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
https://developer.mozilla.org/en/docs/Web/JavaScri...

если в кратце, то switch использует оператор === для сравнения.
попробуйте
function numb(decis) {
	switch (curScene) {
		case "0":
			if (decis == 1) {
				alert("hello1")
			} else {
				alert("hello2")
			}
			break;
	}
}
Ответ написан
Комментировать
bogdanov-s
@bogdanov-s
Че-то там программирую
var curScene = parseInt(document.getElementById("0").id );

0 == "0" // true
0 === "0" // false
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы