gpt4 book ai didi

javascript - 使用 getElementsByTagName 时为空数组

转载 作者:行者123 更新时间:2023-12-03 03:21:09 25 4
gpt4 key购买 nike

如何循环使用 document.getElementsByTagName() 检索到的元素;因为它的长度为 0 但仍然有元素。

下面是JS代码:

class HKPlayer
{
constructor()
{
this.getPlayers();
this.getPlayerAttributes();
}
getPlayers()
{
this.players = document.getElementsByTagName("HKPlayer");
}
getPlayerAttributes()
{
console.log(this.players);
}
}
(function () {
new HKPlayer();
})();

下面是html代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>HKPlayer Demo</title>
<script src="dist/HKPlayer.js" type="text/javascript"></script>
</head>
<body>
<HKPlayer type="video" theme="dark" src="assets/video/1.mp4"></HKPlayer>
<br/>
<HKPlayer type="video" theme="dark" src="assets/video/2.mp4"></HKPlayer>
</body>
</html>

输出如下:

enter image description here

enter image description here

我无法循环遍历 this.players 因为数组 this.players 数组为空。我该怎么做。

最佳答案

您在加载 DOM 之前执行 JS。

尝试包装这部分代码:

(function () {
new HKPlayer();
})();

里面:

document.onreadystatechange = function()
{
if(document.readyState === 'complete')
{
// Put your code that relies on a complete/ready DOM here.
}
}

编辑:作为对评论的回应,这不是 100% 跨浏览器,也不会总是工作。如果您想要尽可能多的浏览器支持,您很可能希望使用以下方法:

document.addEventListener('DOMContentLoaded', fn, false);

回退到:

window.addEventListener('load', fn, false )

或者对于旧版本的 IE:

document.attachEvent("onreadystatechange", fn);

回退到:

window.attachEvent("onload", fn);

这显然是 jQuery 处理 $(document).ready() 的方式。有关此的更多信息可以找到here .

关于javascript - 使用 getElementsByTagName 时为空数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com