我想使用 appendChild() 创建以下以网格格式访问的内容:
<div class="x">
<div class="y">0-0</div>
<div class="y">0-1</div>
<div class="y">0-2</div>
</div>
<div class="x">
<div class="y">1-0</div>
<div class="y">1-1</div>
<div class="y">1-2</div>
</div>
<div class="x">
<div class="y">2-0</div>
<div class="y">2-1</div>
<div class="y">2-2</div>
</div>
然后,我将使用如下方式访问包含“2-1”的 div:
var x2y1 = document.getElementsByClassName('x')[2].getElementsByClassName('y')[1];
回到 IE6,你们知道这里有什么问题吗?
最佳答案
getElementsByClassName
是一个相当新的功能,我认为是在 IE9 中引入的。 (就我个人而言,我从未使用过它,因为 querySelector
也可以做到这一点 - 甚至更多 - 并且是在 IE8 中引入的!)
无论如何,顺序是为所有这些函数定义的。 http://www.w3.org/TR/dom/#concept-getelementsbyclassname请注意,它说它搜索有序集。
另请注意,getElementsByClassName
会返回一个实时列表;对 DOM 的更改会立即在结果中看到(这可能是它与 querySelector(".classname")
之间的主要区别 - 后者返回一个固定数组)。因此,如果您修改元素,请注意您的循环条件和索引。很容易忘记然后只看到一些节点,因为索引是从你脚下改变的!
关于javascript - DOM顺序是否始终一致? (JavaScript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22431330/