一行内使用两个EJS标签报错,如何在if判断中传入id值?
解决EJS中if判断使用传入id的问题
你的猜测没错,问题就是在EJS脚本标签内嵌套了输出标签导致的解析错误。EJS的<% %>是脚本执行块,里面直接写JavaScript代码就行,不需要再用<%= %>来输出变量。
正确写法
直接在if条件里使用传入的id变量,注意用严格相等运算符===避免类型匹配问题:
<% if (id === 0) { %> <!-- 这里写当id为0时要渲染的内容 --> <% } %>
为什么原来的代码报错
你之前的代码<% if ( <%= id %> = 0 ) { %>犯了两个错:
- 在
<% %>脚本块里嵌套了<%= %>输出标签,EJS解析器会把<%= id %>当成普通文本处理,导致脚本块的闭合标签匹配混乱,触发"找不到匹配的闭合标签"错误。 - 用了赋值运算符
=而不是比较运算符==/===,即使标签没问题,逻辑也会出错。
完整示例
如果要根据id值渲染不同内容,可以这么写:
<div> <% if (id === 0) { %> <p>当前ID是0,显示专属内容</p> <% } else { %> <p>当前ID是<%= id %>,显示通用内容</p> <% } %> </div>
内容的提问来源于stack exchange,提问作者Shafay
相关产品推荐
相关产品推荐

