Javascript GetElementsByCassName返回未定义的元素,即使该元素位于DOM中

Javascript GetElementsByCassName返回未定义的元素,即使该元素位于DOM中,javascript,dom,Javascript,Dom,我正在尝试使用getElementsByClassName从页面的DOM中获取一些元素。 看起来很简单,问题是即使元素本身在文档中,我也总是得到未定义的元素(除非我误解了东西) 知道为什么吗 document.getElementsByClassName('massy-column')[0].getElementsByClassName('subject-details')[6]返回未定义的 document.getElementsByClassName('massey-column')[0]。

我正在尝试使用
getElementsByClassName
从页面的DOM中获取一些元素。 看起来很简单,问题是即使元素本身在文档中,我也总是得到未定义的元素(除非我误解了东西)

知道为什么吗

document.getElementsByClassName('massy-column')[0].getElementsByClassName('subject-details')[6]
返回
未定义的

document.getElementsByClassName('massey-column')[0]。getElementsByClassName('subject-details')
返回:

 [div.subject-details, div.subject-details, div.subject-details, div.subject-details, div.subject-details, item: function, namedItem: function]
    0: div.subject-details
    1: div.subject-details
    2: div.subject-details
    3: div.subject-details
    4: div.subject-details
    5: div.subject-details 
    6: div.subject-details // I need this element
    7: div.subject-details
    8: div.subject-details
    length: 9
    __proto__: HTMLCollection

我获取元素太早了。例如,如果我在几秒钟延迟后调用我的函数,那么一切都会按预期进行。

您什么时候运行此函数,在调用Massy之前还是之后?@DavidThomas每当修改页面DOM子树时,我都会调用此函数(让一个侦听器为DomsubreeModified)。@RobG措辞错误。将编辑帖子。DOM调用的一般规则是等待整个文档加载。否则你就有了比赛条件。一个
window.onload=function(){}