簡體   English   中英

HTMLcollection 0 列表長度,[n] 返回未定義,轉換為數組返回空數組

[英]HTMLcollection 0 list length, [n] returns undefined, converting to an array returns an empty array

我正在使用傳單和 d3.js 制作大量 SVG 元素。 我有一個傳單地圖,下面有一些 div,然后是一個腳本元素,我在其中填充傳單地圖,添加來自 .json 文件的數據,然后嘗試將事件偵聽器綁定到下面添加和刪除的 div類到 svg 元素。 在嘗試構建<path>元素的集合時,我已經通過它們進行迭代並將類添加到它們中,但在我的生活中,我無法讓 for 循環工作。

    var lowlightGisUnfiltered = document.getElementById(mapDivId).getElementsByClassName("gisData");
    console.log("unfiltered",lowlightGisUnfiltered, "length", lowlightGisUnfiltered.length);

    var transfer = lowlightGisUnfiltered;
    console.log("transfer:", transfer, "length:", transfer.length);

    var llarray = Array.prototype.slice.call(lowlightGisUnfiltered);
    console.log(llarray);

    console.log(lowlightGisUnfiltered[1]);
    console.log(transfer.item(1));

    var lowlightGIS = [];
    for(var n = 0; n < lowlightGisUnfilteredArray.length; n++){
        console.log("test");
        if(llarray[n].classList.contains(selectorClass)) {

            lowlightGIS.push(lowlightGisUnfiltered[n])
            }
    }

這輸出:

  • unfiltered:[](一個 580 元素的 HTMLcollection,將末尾的長度列為正確的長度) length:0
  • transfer: [](一個 580 元素的 HTMLcollection,將末尾的長度列為正確的長度) length:0
  • [](空數組)
  • 不明確的
  • 空值

所有這些代碼都在我制作動態標簽的 d3 和傳單 javascript 之下。

我已經檢查了所有其他處理類似問題的 HTMLcollection 或 NodeList 問題,但沒有找到解決方案。

編輯:我也試過 .querySelectorAll 但這只是返回一個空數組。

解決了我自己的問題:

我沒有意識到 d3.json 是異步的。 我的代碼在 d3.json 函數之外,所以顯然我的數據實際上沒有加載。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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