确实<;表>;与<;ul>;或<;部门>;当试图收集他们的子标签时?(JavaScript)

确实<;表>;与<;ul>;或<;部门>;当试图收集他们的子标签时?(JavaScript),javascript,html,list,html-table,Javascript,Html,List,Html Table,我试图创建一个通用JavaScript函数来获取标记中的条目集合。例如: 有清单 <ul class="collection"> <li>First Entry</li> <li>Second Entry</li> <li>Third Entry</li> </ul> 第一项 第二项 第三条 带divs <div class="collection">

我试图创建一个通用JavaScript函数来获取标记中的条目集合。例如:

有清单

<ul class="collection">
    <li>First Entry</li>
    <li>Second Entry</li>
    <li>Third Entry</li>
</ul>
  • 第一项
  • 第二项
  • 第三条
带divs

<div class="collection">
    <div >First Entry</div >
    <div >Second Entry</div >
    <div >Third Entry</div >
</div>

第一项
第二项
第三条
有桌子

<table class="collection">
    <tr>First Entry</tr>
    <tr>Second Entry</tr>
    <tr>Third Entry</tr>
</table>

第一项
第二项
第三条
以下是我所拥有的:

function getEntry(a)
{
    var elementCollection = document.getElementsByTagName('*');

    for(var i = 0; i < elementCollection.length; i++)
    {
        if(elementCollection[i].className.toString() === "collection")
        {
            var filteredCollection = elementCollection[i].children;

            alert(filteredCollection[a].innerHTML);
        }
    }
}
函数getEntry(a) { var elementCollection=document.getElementsByTagName('*'); for(var i=0;i 如果我处理列表或div,这正是我想要的,但当我在一个表中运行时,如果a=0,他会给我所有条目,如果a=0


表的行为是否不同,或者我是否做错了什么?

是的,您的HTML无效,因为它不包含
元素,所以浏览器会为您插入它,就像表单元格一样

因此,当您进入
并使用
.children[0]
时,您将获得新的
元素,它包含所有
元素,这解释了为什么它会提供所有条目


当然,如果您使用
.children[1]
或大于
0
的任何内容,则没有children,因为您只有一个
tbody

是的,您的HTML无效,因为它不包含
元素,因此浏览器会为您插入它,就像表格单元格一样

因此,当您进入
并使用
.children[0]
时,您将获得新的
元素,它包含所有
元素,这解释了为什么它会提供所有条目


当然,如果你使用
.children[1]
或任何大于
0
的东西,就没有children,因为你只有一个
tbody

作为
tr
的子对象包含文本内容是无效的HTML(它需要在
th
td
中)作为
tr
的子元素包含文本内容是无效的HTML(它需要在
th
td
中)
表中。单元格将为您提供
th
td
元素。我明白了。因此,在不改变HTML的情况下绕圈的唯一方法是查找异常(表)并执行。children[0]。children[a]?@GabyakaG.Petrioli:是的,这在我的回答中已经提到。我没有包括标记,因为它们对这个示例来说无关紧要(我认为)。@dosaki:可以有多个
元素,以及
元素,因此如果您不知道页面的布局,您可能只想测试表,并使用
table.rows
直接获取所有行<代码>表格。行[0]
表格。单元格将为您提供
th
td
元素。我明白了。因此,在不改变HTML的情况下绕圈的唯一方法是查找异常(表)并执行。children[0]。children[a]?@GabyakaG.Petrioli:是的,这在我的回答中已经提到。我没有包括标记,因为它们对这个示例来说无关紧要(我认为)。@dosaki:可以有多个
元素,以及
元素,因此如果您不知道页面的布局,您可能只想测试表,并使用
table.rows
直接获取所有行<代码>表。行[0]