Javascript 我的div包含一个元素,但该元素没有';使用.children()进行迭代时不会显示
以下是我在Django应用程序中使用的html:Javascript 我的div包含一个元素,但该元素没有';使用.children()进行迭代时不会显示,javascript,html,django,show-hide,Javascript,Html,Django,Show Hide,以下是我在Django应用程序中使用的html: <div id="mahal_questions" class="showHide_div"> {{soldier.mahal_status.label_tag}} {{soldier.mahal_status}} {{soldier.mahal_status.errors}} {{s
<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>
{{soldier.mahal_status.label_tag}}
{{士兵.马哈卢状态}
{{soldier.mahal_status.errors}}
{{soldier.mahal_program.label_tag}}
{{士兵.马哈卢计划}
{{soldier.mahal_program.errors}
{{soldier.mahal_id.label_tag}}
{{士兵,马哈尔}
{{soldier.mahal_id.errors}}
{{士兵。目前{正在服役。标签}
{{士兵,目前在服役}
{{soldier.idf_id.label_tag}
{{士兵,以色列国防军}
{{soldier.idf_id.errors}
{{士兵.陆军部队.标签}
{{士兵.陆军部队}
{{士兵.陆军部队.错误}
{{soldier.tafkid.label_tag}}
{{士兵.塔夫基德}
{{soldier.tafkid.errors}
这里有两个div,每个div包含3个字段。
mahal_问题包括
mahal_状态、mahal_计划和mahal_id
目前的问题包括
国防军、陆军部队和塔夫基德战场
然而,由于某种原因,当我在我的div中循环,并且在每个div中循环我的元素时,我只看到每个div中的前两个元素。最后一个元素被忽略。(我想这个问题可能是在我添加了一些
元素时开始的,但我不确定。)
这是我的js(该方法旨在循环页面上的每个div,如果div是隐藏的,则在提交时循环元素并擦除它们的值,以便隐藏字段的值不会发送到db):
$('#摄入_形式')。提交(函数(){
var showhideDivList=document.getElementsByClassName(“showHide_div”);//避免在没有显示/隐藏的页面上出现错误
如果(showhideDivList.length>0){
//获取每个显示/隐藏div
数组.from(showhideDivList).forEach(函数(div){
控制台日志(div);
//如果这个div是隐藏的
如果($(div).is(“:hidden”)){
////对于将在div中显示/隐藏的每个元素
var元素=$(div.children();
log(“elements.length:+elements.length”);
对于(var i=0;i
请参见评论中的Pointy的答案。
问题是我将两个“缺失”字段包装在标记中,因此.children()函数将捕获而不是/code>中的元素。谢谢你,尖头
为了解决这个问题,我只需将
放在mahal_id和tafkid字段之前,将它们的标签推到错误消息之后的行上,然后它们直接放在各自的div下,并将包含在.children()的结果中函数。能否显示呈现的html请选择
元素将是
元素的子元素,并且循环不会在这些元素中迭代。通常在浏览器中使用“查看页面源代码”。一旦确定模板中的内容确实存在,您就知道您正在处理的是JQuery或Javascript问题,而不是Django问题。
$('#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());
}
}
});
}
});