不是双关语...
我对 Javascript 和 Flask 还很陌生……这里的代码是:
// searches for a name in the list of persons
function searchFName(){
var userInput = document.getElementById("search").value;
var fname = "";
{% for i in range(persons|length) %}
fname = {{ persons[i].fname|tojson }};
if(userInput == fname)
{
alert(userInput + "found!");
}
{% endfor %}
}
工作得很好。它遍历人员列表,并检查他们的名字是否与用户提供的名字匹配......基本上是一个搜索功能。
但是,如果此人已被找到,我不想让 Jinja 遍历列表。
所以我试着{% break %}
在这里添加:
if(userInput == fname)
{
alert(userInput + "found!");
{% break %}
}
并且该功能停止工作,它在控制台上给我一个错误:
Uncaught SyntaxError: Unexpected end of input
我知道这个问题可能既愚蠢又简单,但我已经搜索了很多,但还没有找到任何有同样问题的人。
有关如何解决此问题或解决方法的任何信息?
谢谢!
但是,如果此人已被找到,我不想让 Jinja 遍历列表。
模板无法确定这一点。模板在查看页面时呈现,而不是在调用函数时呈现——{% break %}
将始终跳出循环而不生成函数的其余部分。语法错误的出现是因为{% break %}
导致if
语句的右大括号被省略。
最好避免使用模板生成代码。这里更好的方法是让整个数组对 Javascript 可用,然后使用 Javascript 方法搜索数组:
function searchFName(){
var userInput = document.getElementById("search").value;
var fnames = {{ persons_fnames | tojson }};
if (fnames.indexOf(userInput) !== -1) {
alert(userInput + " found!");
}
}
(请注意,我在persons_fnames
这里用作变量或表达式的占位符,其中包含persons[i].fname
每个人的值。这个列表可能应该在模板之外生成,以避免在模板文件中放置太多逻辑。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句