简体   繁体   English

如何从 div 元素中获取所有 ID?

[英]How to get all IDs from div element?

I'm trying to get all IDs within both div elements but I don't know why the following code is not working (taken example from here How to get ALL id's inside of a DIV using pure javascript ).我正在尝试获取两个 div 元素中的所有 ID,但我不知道为什么以下代码不起作用(以此处为例How to get ALL id's inside a DIV using pure javascript )。 Please advice.请指教。

These are my attempts so far这些是我迄今为止的尝试

Attempt #1尝试#1

var everyChild = document.querySelectorAll('#col-x-z.ab.def');
for (var i = 0; i < everyChild.length; i++) {
  console.log(everyChild[i]);
}

Attempt #2尝试#2

var c = document.querySelectorAll('##col-x-z.ab.def > div');
console.log(c);

Here is my source code:这是我的源代码:

 .col-xz.ab.def { border: 4px outset red; background-color: lightblue; text-align: center; }.portlet.box.blue { border: 2px outset blue; background-color: lightblue; text-align: center; }
 <div class="col-xz ab def" id="sortable_portlets"> <div class="col-xz ab def" id="col_1" col="1"> <div id="353" class="portlet box blue">x</div> <div id="355" class="portlet box blue">x</div> <div id="358" class="portlet box blue">x</div> <div id="353" class="portlet box blue">x</div> <div id="360" class="portlet box blue">x</div> <div id="363" class="portlet box blue">x</div> <div id="365" class="portlet box blue">x</div> <div id="367" class="portlet box blue">x</div> </div> <div class="col-xz ab def" id="col_2" col="2"> <div id="473" class="portlet box blue">y</div> <div id="475" class="portlet box blue">y</div> <div id="478" class="portlet box blue">y</div> <div id="473" class="portlet box blue">y</div> <div id="480" class="portlet box blue">y</div> <div id="483" class="portlet box blue">y</div> <div id="485" class="portlet box blue">y</div> <div id="487" class="portlet box blue">y</div> </div> </div>

If you would like to get all IDs grouped by parent ID, this will do that:如果您想获取按父 ID 分组的所有 ID,可以这样做:

 var c = Object.fromEntries(Array.from(document.querySelector('#sortable_portlets').children).map(e => [e.id, Array.from(e.children).map(f => f.id).filter(f => f)])); console.log(c);
 .col-xz.ab.def { border: 4px outset red; background-color: lightblue; text-align: center; } portlet.box.blue { border: 2px outset blue; background-color: lightblue; text-align: center; }
 <div class="col-xz ab def" id="sortable_portlets"><div class="col-xz ab def" id="col_1" col="1"><div id="353" class=" portlet box blue">x</div><div id="355" class=" portlet box blue">x</div><div id="358" class=" portlet box blue">x</div><div id="353" class=" portlet box blue">x</div><div id="360" class=" portlet box blue">x</div><div id="363" class=" portlet box blue">x</div><div id="365" class=" portlet box blue">x</div><div id="367" class=" portlet box blue">x</div></div><div class="col-xz ab def" id="col_2" col="2"><div id="473" class=" portlet box blue">y</div><div id="475" class=" portlet box blue">y</div><div id="478" class=" portlet box blue">y</div><div id="473" class=" portlet box blue">y</div><div id="480" class=" portlet box blue">y</div><div id="483" class=" portlet box blue">y</div><div id="485" class=" portlet box blue">y</div><div id="487" class=" portlet box blue">y</div></div></div>

If you just want a simple array of all IDs, use this:如果您只想要一个包含所有 ID 的简单数组,请使用以下命令:

 var c = Array.from(document.querySelectorAll('#sortable_portlets >.col-xz.ab.def > div')).map(e => e.id).filter(e => e); console.log(c);
 .col-xz.ab.def { border: 4px outset red; background-color: lightblue; text-align: center; } portlet.box.blue { border: 2px outset blue; background-color: lightblue; text-align: center; }
 <div class="col-xz ab def" id="sortable_portlets"><div class="col-xz ab def" id="col_1" col="1"><div id="353" class=" portlet box blue">x</div><div id="355" class=" portlet box blue">x</div><div id="358" class=" portlet box blue">x</div><div id="353" class=" portlet box blue">x</div><div id="360" class=" portlet box blue">x</div><div id="363" class=" portlet box blue">x</div><div id="365" class=" portlet box blue">x</div><div id="367" class=" portlet box blue">x</div></div><div class="col-xz ab def" id="col_2" col="2"><div id="473" class=" portlet box blue">y</div><div id="475" class=" portlet box blue">y</div><div id="478" class=" portlet box blue">y</div><div id="473" class=" portlet box blue">y</div><div id="480" class=" portlet box blue">y</div><div id="483" class=" portlet box blue">y</div><div id="485" class=" portlet box blue">y</div><div id="487" class=" portlet box blue">y</div></div></div>

 var coll = document.getElementsByClassName(" portlet box blue"), ids = [], i = 0; while( coll[ i ] ) { ids.push( coll[ i++ ].id ) }; console.log( ids );
 <div class="col-xz ab def" id="sortable_portlets"> <div class="col-xz ab def" id="col_1" col="1"> <div id="353" class=" portlet box blue">x</div> <div id="355" class=" portlet box blue">x</div> <div id="358" class=" portlet box blue">x</div> <div id="353" class=" portlet box blue">x</div> <div id="360" class=" portlet box blue">x</div> <div id="363" class=" portlet box blue">x</div> <div id="365" class=" portlet box blue">x</div> <div id="367" class=" portlet box blue">x</div> </div> </div> <div class="col-xz ab def" id="col_2" col="2"> <div id="473" class=" portlet box blue">y</div> <div id="475" class=" portlet box blue">y</div> <div id="478" class=" portlet box blue">y</div> <div id="473" class=" portlet box blue">y</div> <div id="480" class=" portlet box blue">y</div> <div id="483" class=" portlet box blue">y</div> <div id="485" class=" portlet box blue">y</div> <div id="487" class=" portlet box blue">y</div> </div> </div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM