Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在具有相同类名的div中查找最大数量的子元素_Javascript - Fatal编程技术网

Javascript 如何在具有相同类名的div中查找最大数量的子元素

Javascript 如何在具有相同类名的div中查找最大数量的子元素,javascript,Javascript,因此,我有一个html日历,我需要在一周内循环查找元素,然后比较几周来查找元素数量最多的一周。我的结构如下所示: <div class="week"> <div class="day"> </div> <div class="day"> </div> <div class="day"> <div id="unique-nu

因此,我有一个html日历,我需要在一周内循环查找元素,然后比较几周来查找元素数量最多的一周。我的结构如下所示:

    <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 :)