javascript
  • google-app-engine
  • jinja2
  • 2013-04-30 38 views 0 likes 
    0

    我想呈现一个模板,显示评论数量(1评论或xxx评论)。我正在通过jinja2迭代GAE中的实体实例对象,但它只是在此之后通过每个循环的intead执行第一个循环的脚本。我的代码有什么问题?遍历循环在HTML和JavaScript只执行一次 - 应该在做循环中的每一次

    <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 %} 
    
    +0

    为什么不使用jinja本身没有任何JavaScript?这不是必需的。 – 2013-04-30 07:10:37

    +0

    无论如何,你必须给你的'td'每行一个唯一的ID,如下所示:''。并在你的javascript:'var reviewCount = document.getElementById(“num_reviews - {{each.unique_id}}”);'。 – 2013-04-30 07:14:26

    回答

    2

    神社解决方案,无需任何额外的javascript:

    {% 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是对各each元素的独特属性你的循环。

    +0

    ohhh - 不知道你可以在忍者那里做到这一点! – user1769203 2013-05-01 13:43:40

    相关问题