Javascript 如何在具有相同类名的div中查找最大数量的子元素
因此,我有一个html日历,我需要在一周内循环查找元素,然后比较几周来查找元素数量最多的一周。我的结构如下所示:Javascript 如何在具有相同类名的div中查找最大数量的子元素,javascript,Javascript,因此,我有一个html日历,我需要在一周内循环查找元素,然后比较几周来查找元素数量最多的一周。我的结构如下所示: <div class="week"> <div class="day"> </div> <div class="day"> </div> <div class="day"> <div id="unique-nu
<div class="week">
<div class="day">
</div>
<div class="day">
</div>
<div class="day">
<div id="unique-number" class="target-element"></div>
<div id="unique-number" class="target-element"></div>
<div id="unique-number" class="target-element"></div>
</div>
<div class="day">
</div>
<div class="day">
<div id="unique-number" class="target-element"></div>
<div id="unique-number" class="target-element"></div>
</div>
<div class="day">
</div>
<div class="day">
<div id="unique-number" class="target-element"></div>
</div>
</div>
<div class="week">
<div class="day">
</div>
<div class="day">
<div id="unique-number" class="target-element"></div>
</div>
<div class="day">
</div>
<div class="day">
</div>
<div class="day">
<div id="unique-number" class="target-element"></div>
</div>
<div class="day">
</div>
<div class="day">
</div>
</div>
我已经尝试了一千种不同的方法,但是没有骰子
任何帮助都将不胜感激
编辑:
我可能应该指定,我的javascript只是尝试构建一个包含每周值的数组的开始,然后使用Math.max.apply(Math,maxDay)进行比较代码>,但数组并不像我希望的那样构建,或者似乎将整个日历的每个元素都放在了数组中,或者什么都没有
编辑:
我意识到我实际上需要针对唯一的div id,而不仅仅是.target元素。它们实际上是同一个div,但出于我的目的,我希望获得所有唯一的div id编号,按周循环这些编号,这样我就可以添加一个网格行start css position
我的目标是清除日历事件结构中的所有空白
太近了!由于某种原因,每周循环对我来说已经成为一个巨大的心理障碍
我可以让所有独特的div这样做:
var b = new Array();
$('.inner-pto-cal').each(function () {
b.push($(this).parent().attr("id"));
//console.log( b );
});
我只想每周得到一次,这样我就可以每周循环,以增量方式添加到网格行开始,然后在下周循环时重置
目前,这是我整个月的工作内容:
for (var i = 2; i < uniq.length; i++) {
$('#' + (uniq[i]) + '.pto-cal-link').each(function () {
//change the grid-row-position
$(this).css('grid-row-start' , ''+i );
console.log('#'+uniq[i]);
//console.log(q);
});
}
for(变量i=2;i
像以前一样循环查看.week
元素,但不要尝试构建数组(除非以后需要数组),只需跟踪当前最大计数并在每次迭代中调整它即可。注意:如果需要查找子元素(子元素中的元素),则需要使用find()
而不是children()
children()
仅用于查找直接子元素
let maxWeekCount = 0;
let maxWeek = null;
$('.week').each(function(){
let weekcount = $(this).find('.target-element').length;
if(weekCount > maxWeekCount){
maxWeekCount = count;
maxWeek = $(this);
}
});
最后,你将有一个元素最多、数量最多的一周
范例
设maxWeekCount=0;
设maxWeek=null;
$('.week')。每个(函数(){
让weekCount=$(this).find('.target元素').length;
如果(weekCount>maxWeekCount){
maxWeekCount=weekCount;
maxWeek=$(此项);
}
});
log(${maxWeek.data('week')}周的${maxWeekCount}最大计数)代码>
$(文档).ready(函数(){
var lengthArr=[]
$('.week')。每个(函数(即,e){
var cnt=$(this).find('.target元素').length;
长推力(cnt);
$(this.attr('data-length',cnt);
//警报($(this.data('length'));
});
设i=lengthArr.indexOf(Math.max(…lengthArr));
警报('每周的最大长度为:'+lengthArr[i]+'位置:'+(i+1));
});代码>
我找到了解决您问题的方法。对不起,我没有使用jQuery
var weeks = document.getElementsByClassName("week");
var targets = Array.from(weeks).map(function(week) {
return week.getElementsByClassName("target-element").length;
})
// targets should be [6, 2] in your case :)
基本上,您可以得到一个数组,其中包含每周的目标元素,您可以通过索引获得每周
希望这有帮助 所以我们的目标是找到.week
中目标元素的最大计数,对吗?是的,这就是目标。然后最终返回该数字,并将其分配给每周的CSS属性。最后一点我相信我能处理:D.你可能想检查这个问题,在awnser之后,只需比较arraysAwesome的长度!这对我很有帮助。我意识到太晚了,我需要在那些.day
类div中实际定位一个div id
:(我将更新我的问题以获得澄清。
var weeks = document.getElementsByClassName("week");
var targets = Array.from(weeks).map(function(week) {
return week.getElementsByClassName("target-element").length;
})
// targets should be [6, 2] in your case :)