我的div包含一个元素,但是使用.children()进行迭代时该元素不会显示。

问题描述 投票:0回答:1
这是我在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_idcurrent_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()); } } }); } });

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

{{soldier.mahal_status.label_tag}} {{...] >>>>

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

因此,我只将<p></p>放在mahal_id和tafkid字段之前,将其标签粘贴到错误消息之后的行上,然后将它们直接放在各自的div下,并将其包含在.children的结果中()函数。

javascript html django show-hide
1个回答
0
投票
请参阅Pointy在评论中的回答。问题是我在<p>标记中包装了两个“缺失”字段,因此.children()函数正在捕获<p>,而不是<p>中的元素。谢谢,Pointy!

因此,我只将<p></p>放在mahal_id和tafkid字段之前,将其标签粘贴到错误消息之后的行上,然后将它们直接放在各自的div下,并将其包含在.children的结果中()函数。

© www.soinside.com 2019 - 2024. All rights reserved.