代码之家  ›  专栏  ›  技术社区  ›  jjuser19jj

遍历HTMLCollection并映射到数组

  •  0
  • jjuser19jj  · 技术社区  · 7 年前

    我有以下HTML:

    <div style='direction:ltr'>
    
    <table border=1 cellpadding=0 cellspacing=0 valign=top style='direction:ltr;
     border-collapse:collapse;border-style:solid;border-color:#A3A3A3;border-width:
     1pt' title="" summary="">
     <tr>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.6673in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>1</p>
      </td>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.6673in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>a</p>
      </td>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.5in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>b</p>
      </td>
     </tr>
     <tr>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.6673in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>2</p>
      </td>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.6673in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>f</p>
      </td>
      <td style='border-style:solid;border-color:#A3A3A3;border-width:1pt;
      vertical-align:top;width:.5in;padding:4pt 4pt 4pt 4pt'>
      <p style='margin:0in;font-family:Calibri;font-size:11.0pt'>3</p>
      </td>
     </tr>
    </table>
    
    </div>

    现在我想遍历HTMLCollection,将给定的标记映射到一个对象,并将其存储在一个数组中。外汇。我想把每个p标记映射到{tag:'p',text:element.innerHTML,children:[…]}。包括正确的儿童地图。就在这里,我被困住了,我怎样才能确保我能看望每一个孩子?在使用google之后,我遇到了两个术语:遍历和“在dom中行走”。我不确定哪一条路是正确的,或者我是否应该研究另一条路。 我不是在寻找一个代码解决方案,我更希望能找到正确的方向。

    谢谢你的帮助和时间!

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mike Samuel    7 年前

    如果要迭代该表元素的所有子元素,可以执行以下操作:

    • 为表分配一个id,以便更好地使用js获取它,然后:
    • 下表: var myTable = document.getElementById('myTable');
    • 所有要素: myTable.getElementsByTagName("*"); 这将为您提供表中的所有tbody、tr、td和p
    • 迭代HTMLCollection以获取所需的元素:

      for(var i = 0; i < el.getElementsByTagName("*").length; i++){
        console.log(el.getElementsByTagName("*")[i])
      }