2

跳到底部查看问题:

我正在使用从 htmlCollections 退回给我的地狱

document.getElementById("Id")

document.getElementsByClassName("ClassName")

现在,我一直认为 byClassName 和 TagName 是唯一返回 HTML 集合的,但由于某种原因,这段代码在第二行记录了一个 htmlCollection。不好

var findPos = function(el) {
  console.log(el)
  var curleft = curtop = 0;
  if (el.offsetParent) {
    do {
      curleft += el.offsetLeft;
      curtop += el.offsetTop;
    } while (el = el.offsetParent);
    el.setAttribute("data-off-top", curtop);
  };
}

var myElement = document.getElementById("myId");
findPos(myElement);

做完全相同的事情,我不知道为什么。

之前,我有最后两行,我得到了一个 HTMLCollection,它对只读没有帮助。

var affixElements = document.getElementsByClassName("affixMe");
for (var i = 0; i < affixElements.length; i++) {
  var thisOne = affixElements.item(i);
  findPos(thisOne);
};

我有两个问题:

1) 为什么 getElementById 会返回一个 htmlCollection?

我已经检查了文档,没有其他 id="myId"

2) 如何在 HTML 集合的各个项目中设置属性以设置偏移函数的数据属性?

4

0 回答 0