簡體   English   中英

無法訪問HTMLCollection的值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM