javascript - 在 html 和 javascript 中迭代循环仅执行一次 - 应该在循环中每次执行

标签 javascript google-app-engine jinja2

我正在尝试呈现一个显示评论数量(1 条评论或 xxx 条评论)的模板。我通过 jinja2 迭代 GAE 中的实体实例对象,但它仅在第一个循环中执行脚本,而不是在之后的每个循环中执行脚本。我的代码有什么问题吗?

   <table>
    {% for each in courses_taught %}
 <tr>   
    <td id="num_reviews">           
             <script type='text/javascript'>   
        var html_output = "";               
            var review_count ={{each.num_reviews}};

                if (review_count ==1) {             
        html_output += "<a href='../course/{{each.key()}}'>1 review</a>";
        }               

        else if (review_count > 1) {
        html_output += "<a href='../detail/course/{{each.key()}}'>" + num_reviews + " reviews</a>";
        }

        else {
        html_output +="<a id='trailblazer' href='../../../review/writeReview/{{each.key()}}'>Be the trailblazer</a>";
        }

              var reviewCount = document.getElementById("num_reviews");  
      reviewCount.innerHTML = html_output;              

</script>   
</td>

 </tr>

{% endfor %}

最佳答案

无需任何额外 JavaScript 的 Jinja 解决方案:

{% for each in courses_taught %}
    {{ each.num_reviews }}
    review{% if each.num_reviews > 1 %}s{% endif %}
{% endfor %}

如果你想使用 javascript(为什么?):

{% for each in courses_taught %}
    <tr>   
        <td id="num_reviews-{{each.unique_id}}">           
            <script type='text/javascript'>   
                var html_output = "";               
                var review_count = {{each.num_reviews}};

                if (review_count == 1) {             
                    html_output += "<a href='../course/{{each.key()}}'>1 review</a>";
                }               

                else if (review_count > 1) {
                   html_output += "<a href='../detail/course/{{each.key()}}'>" + num_reviews + " reviews</a>";
                }

                else {
                    html_output +="<a id='trailblazer' href='../../../review/writeReview/{{each.key()}}'>Be the trailblazer</a>";
                }

                var reviewCount = document.getElementById("num_reviews-{{each.unique_id}");  
                reviewCount.innerHTML = html_output;
            </script>
        </td>

    </tr>
{% endfor %}

其中 unique_id 是循环中每个每个元素的唯一属性。

关于javascript - 在 html 和 javascript 中迭代循环仅执行一次 - 应该在循环中每次执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16294110/

相关文章:

javascript - angularJS中的WebGL ThreeJS和PhysiJS无法启动物理?

android - War目录无法解析

ansible - Ansible 三元过滤器的问题

javascript - 多个圆圈 -> 一个多边形?

javascript - jQuery ajax async false 修改页面中的html

google-app-engine - Google App Engine - 本地开发服务器和部署服务器之间的区别

python - 在 Flask 中打印元组列表

python - 将Python中的字符串作为变量传递给Flask中的render_template()

javascript - 如何在 Mongoose 中验证数组并同时验证其元素

google-app-engine - key 列表或单独的型号?