尽管有if语句,代码仍在所有循环中运行

时间:2020-05-30 08:29:37

标签: javascript ejs

我正在使用ejs。无论我的陈述返回什么(无论currentGame是什么),我的输出始终为12。我尝试实现break;return;,并尝试使用诸如{{1} }或switch case,但没有帮助。
如果在每个循环中输入while,则输出{1、2、3 ... 12}。

console.log

我在浏览器中得到的代码是:

"<%var x%>"

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

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

1 个答案:

答案 0 :(得分:0)

问题是您的代码正无条件地分配给服务器端x变量,在此处:

"<%var x%>"

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

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

if客户端代码,它对服务器端逻辑没有任何影响。该代码中的服务器端逻辑如下:

var x

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

这是问题所在。 x始终为12。


但是,从您已发布的特定代码中退后一步:使用服务器端代码生成客户端代码几乎绝不是一个好主意。相反,请分别编写客户端代码和服务器代码,这样就不会造成这种混乱。