Nunjucks模板如何判断loop.index不能被2整除并解决相关报错?
问题原因
你遇到的报错是Nunjucks的运算符优先级导致的:逻辑运算符not的优先级高于取模运算符%,你写的not loop.index % 2会被模板引擎优先解析为(not loop.index) % 2,语法解析不匹配就抛出了对应的错误。
解决方案
要实现loop.index不能被2整除时添加bg-grey-light类,有两种常用写法:
写法1:直接判断取模结果(推荐)
直接判断取模结果等于1即可,逻辑更直观:
{% for items in Reviews %} {% for client in items.feedback %} <div class="{{"bg-grey-light" if loop.index % 2 == 1}}"> <p>{{client.message}}</p> <p>— {{client.name}}</p> </div> {% endfor %} {% endfor %}
写法2:使用not关键字(需加括号)
如果要使用not关键字实现,需要把取模判断的逻辑用括号包裹,明确运算顺序:
{% for items in Reviews %} {% for client in items.feedback %} <div class="{{"bg-grey-light" if not (loop.index % 2 == 0)}}"> <p>{{client.message}}</p> <p>— {{client.name}}</p> </div> {% endfor %} {% endfor %}
补充说明
Nunjucks内置的loop.index默认从1开始计数,如果后续需要切换为偶数项添加类,把判断条件改为loop.index % 2 == 0即可。
内容的提问来源于stack exchange,提问作者klewis
相关产品推荐
相关产品推荐

