[英]Can't access the value of HTMLCollection
的test.html
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
<script>
var eles = document.getElementsByClassName('review');
console.log(eles);
console.log(eles.length);
console.log(eles[0]);
// for(var i=0, max=eles.length)
</script>
</head>
<body>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
</body>
我檢查了eles代表HTMLCollenction。
這里說HTMLCollection還通過名稱和索引直接將其成員公開為屬性。
所以我嘗試通過console.log(eles.length)和console.log(eles [0])進行調試。 但不幸的是,控制台顯示0和未定義。(使用谷歌Chrome工具開發人員)
我怎樣才能訪問eles的結果? 我想更改樣式並將屬性添加到ClassName獲取的標簽。 另外,我只能使用自然的Javascript。
問題是您已將腳本放在標頭中,該標頭在加載html元素之前執行,因此getElementsByClassName()
不會返回任何元素。
一種解決方案是等待加載html元素然后執行您的腳本,為此您可以使用窗口對象加載事件
window.addEventListener('load', function () {
var eles = document.getElementsByClassName('review');
console.log(eles);
console.log(eles.length);
console.log(eles[0]);
})
或者您可以將腳本放在body
元素的底部而不是head
以便在解析和執行腳本時將元素加載到dom中
運行代碼時,您的html元素不存在。 你的代碼被處理,在那個poiint你的身體標簽不存在。 所以:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<script>
var eles = document.getElementsByClassName('review');
console.log(eles);
console.log(eles.length);
console.log(eles[0]);
</script>
</body>
工作正常,因為您在添加html元素后運行了代碼。
最佳做法是,您通常在body
標記的末尾使用javascript。
(或者另一種技術是使用'ready'腳本,例如document.load
或$(function(){
)
使用以下代碼訪問0位置元素: -
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
<div class="review"></div>
</body>
<script>
var eles = document.getElementsByClassName('review');
console.log(eles);
console.log(eles.length);
console.log(eles[0]);
// for(var i=0, max=eles.length)
</script>
</html>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.