我的 django 模板中的 forloop.counter0 在原始 for 循环下不起作用

forloop.counter0 in my django template is not working under original for loop

提问人:Amirhossein Matoufi 提问时间:3/10/2022 最后编辑:Amirhossein Matoufi 更新时间:3/10/2022 访问量:177

问:

我有一个 for 循环,它通过一系列检查。我想根据不同的情况操纵标签内的东西。为了测试,我尝试使用 jquery 在迭代时打印出元素的 id,但 forloop 似乎卡在 0。当我放入html时,它会迭代,但是当我放入属性“id”时,它不会迭代。根据下面的代码,它应该迭代 I 的次数。但它不会。我还试图在我的内部 HTML 中获取一个控制台 .log(,但我得到的只是一遍又一遍地重复第一项,而不是沿着列表向下(在网络上,但它看起来很小,它迭代了,只是我猜不是在后端? 请注意,jQuery 是在 HTML 的开头导入的。这只是问题的一小部分。

我将不胜感激。

我的代码:

<div class="tab-pane fade" id="nav-inspection" role="tabpanel"
                                 aria-labelledby="nav-inspection-tab">
                                <div class="container"></br></br>
                                    {% for i in inspections %}
                                        <div class="card - mb-3" style="width: 40 rem;">
                                            <div class="card-body">
                                                <h3 class="card-title">{{i.Title}} - <span title="" id="s{{forloop.counter0}}">{{i.Condition}}</span>
                                                </h3>
                                                <script type="text/javascript">
                                                    console.log(document.querySelector('[title]').innerHTML);
                                                    $(document).ready(function(){
                                                        alert($('[title]').attr("id"));
                                                    });
                                                </script>
                                                <p>{{i.Desc}}</p>
                                                <h4><span class="badge badge-primary">{{i.Cost}}</span></h4>
                                            </div>
                                        </div>
                                    {% endfor %}
                                </div>
                            </div>
JavaScript jQuery Django 模板

评论

0赞 Thierno Amadou Sow 3/10/2022
我会假设,那么为什么不使用而不是并尝试将 forloop 放在外面,这是一个更好的设计inspections is from a django models{{ i.pk }}s{{forloop.counter0}}<script> tag
1赞 Amirhossein Matoufi 3/11/2022
这其实是个好主意。他们已经为每一行准备了一个 pk,所以是的,这是有道理的。非常感谢,@ThiernoAmadouSow!

答:

1赞 Amirhossein Matoufi 3/10/2022 #1

我实际上是自己修复的。我只是使用 来迭代创建的每个跨度并切换类。 很容易找到。$('[title]').each(function(){});

{% for i in inspections.all %}
    <div class="card - mb-3" style="width: 40 rem;">
        <div class="card-body">
            <h3 class="card-title">{{i.Title}} - <span title="inspection" id="s{{forloop.counter0}}" class="">{{i.Condition}}</span>
            </h3>
            <p>{{i.Desc}}</p>
            <h4><span class="badge badge-primary">{{i.Cost}}</span></h4>
        </div>
    </div>
{% endfor %}
<script type="text/javascript">
    $(document).ready(function(){
        $("[title='inspection']").each(function(){
            if ($(this).html() == 'Poor'){
                $(this).toggleClass("badge badge-danger");
            } else if ($(this).html() == 'Not Satisfactory') {
                $(this).toggleClass("badge badge-warning");
            } else if ($(this).html() == 'Satisfactory'){
                $(this).toggleClass("badge badge-success");
            }else if ($(this).html() == 'Not Inspected'){
                $(this).toggleClass("badge badge-secondary");
            }
        });
    });
</script>

评论

1赞 Sunderam Dubey 3/10/2022
正确维护代码中的缩进。