我的div包含一个元素,但是使用.children()

这是我在Django应用程序中使用的html:

<div id="mahal_questions" class="showHide_div">
                        {{soldier.mahal_status.label_tag}}
                        {{soldier.mahal_status}}
    {{soldier.mahal_status.errors}}
                        {{soldier.mahal_program.label_tag}}
                        {{soldier.mahal_program}}
    {{soldier.mahal_program.errors}}
    <p>
                        {{soldier.mahal_id.label_tag}}
                        {{soldier.mahal_id}}
    {{soldier.mahal_id.errors}}</p>
</div>
                        {{soldier.currently_serving.label_tag}}
                        {{soldier.currently_serving}}
<div id="currently_serving_questions" class="showHide_div">
                        {{soldier.idf_id.label_tag}}
                        {{soldier.idf_id}}
    {{soldier.idf_id.errors}}
    <p></p> <!--prevents the error message from running into the next label-->
                        {{soldier.army_unit.label_tag}}
                        {{soldier.army_unit}}
    {{soldier.army_unit.errors}}
                        <p>{{soldier.tafkid.label_tag}}
                        {{soldier.tafkid}}
                            {{soldier.tafkid.errors}}</p>
</div>

我这里有两个div,每个div包含3个字段。 mahal_questions包括 mahal_status,mahal_program和mahal_id current_serving_questions包括 idf_id,Army_unit和tafkid字段。

但是由于某种原因,当我遍历div并在每个div中遍历元素时,我只看到每个div中的前两个元素。最后一个元素将被忽略。 (我认为当我添加一些<p>元素时可能已经开始出现此问题,但是我不确定。)

这是我的js(该方法旨在遍历页面上的每个div,如果div被隐藏,则遍历元素并在提交时擦除它们的值,这样隐藏字段的值就不会发送到db ):

 $('#intake_form').submit(function() {
  var showhideDivList = document.getElementsByClassname("showHide_div"); //To avoid errors on a page with no show/hides
        if (showhideDivList.length > 0) {
            //get each show/hide div
            Array.from(showhideDivList).forEach(function (div) {
                console.log(div);
                //if this div is hidden
                if ($(div).is(":hidden")){
                    // //for each element that is going to be shown/hidden within the div
                    var elements = $(div).children();
                    console.log("elements.length:" + elements.length);
                    for (var i = 0; i < elements.length; i++) {
                        var element = elements.eq(i);
                        console.log(element);
                        console.log("value",element.val());
                        element.val("");
                        console.log("value",element.val());
                    }
                }
            });
        }
});
yangyuejr 回答:我的div包含一个元素,但是使用.children()

请参阅评论中Pointy的回答。 问题是我有两个用<p>标记包裹的“ missing”字段,因此.children()函数捕获<p>而不是<p>中的元素。谢谢你,Pointy!

因此,要解决此问题,我只是在错误消息之后将<p></p>放在mahal_id和tafkid字段之前,将其标签推到行上,然后将它们直接放在各自的div下,并将其包含在来自.children()函数。

本文链接:https://www.f2er.com/2797723.html

大家都在问