跳到底部查看问题:
我正在使用从 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 集合的各个项目中设置属性以设置偏移函数的数据属性?