Код проходит через все циклы, несмотря на операторы if - PullRequest
1 голос
/ 30 мая 2020

Я использую e js. Независимо от того, что возвращает мой оператор (независимо от того, что такое currentGame), мой результат всегда равен 12. Я пробовал реализовать break; или return; и пробовал использовать другие циклы, такие как switch case или while, но это не помогло.
Если я сделаю console.log в каждом l oop, я получу {1, 2, 3 ... 12} в качестве вывода.

"<%var x%>"

  "<%for(var i=1; i<=12; i++){%>"
  if(currentGame === "<%=i%>"){
      "<%x=i;%>"
  }

"<%}%>"
console.log("<%=x%>")

И полученный код Я получаю в своем браузере:

        ""

  ""
  if(currentGame === "1"){
      ""
  }

""
  if(currentGame === "2"){
      ""
  }

""
  if(currentGame === "3"){
      ""
  }

""
  if(currentGame === "4"){
      ""
  }

""
  if(currentGame === "5"){
      ""
  }

""
  if(currentGame === "6"){
      ""
  }

""
  if(currentGame === "7"){
      ""
  }

""
  if(currentGame === "8"){
      ""
  }

""
  if(currentGame === "9"){
      ""
  }

""
  if(currentGame === "10"){
      ""
  }

""
  if(currentGame === "11"){
      ""
  }

""
  if(currentGame === "12"){
      ""
  }

""
console.log("12")

1 Ответ

0 голосов
/ 30 мая 2020

Проблема в том, что ваш код присваивает вашей серверной стороне x переменную безусловно , здесь:

"<%var x%>"

"<%for(var i=1; i<=12; i++){%>"
if(currentGame === "<%=i%>"){
    "<%x=i;%>" // <===================================
}

"<%}%>"
console.log("<%=x%>")

if - это клиентская сторона код, он не влияет на логи c на стороне сервера. Лог c на стороне сервера в этом коде выглядит так:

var x

for(var i=1; i<=12; i++){
    x=i;
}

В чем проблема. x всегда будет 12.


Однако отступление от указанного c кода, который вы опубликовали: Использование кода на стороне сервера для генерации кода на стороне клиента почти никогда не помогает идея. Вместо этого напишите код клиента и код сервера отдельно, чтобы не возникало путаницы такого рода.

...