2015-12-09 30 views
1

我使用小冊子和d3.js製作了大量的SVG元素。我有一個小冊子地圖,下面有一些div,然後是一個腳本元素,我在其中填充小葉地圖,從.json文件中添加數據,然後嘗試將事件偵聽器綁定到添加和刪除下面的div類的svg元素。在嘗試構建我已經通過迭代遍歷它們的<path>元素的集合並向它們添加類時,但對於我的生活,我無法獲得for循環的工作。HTMLcollection 0列表長度,[n]返回undefined,轉換爲數組返回一個空數組

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]) 
      } 
    } 

此輸出:

  • 未過濾:[](580元件的HTMLCollection,該目錄的長度在端部作爲正確的長度)長度:0
  • 傳輸:[](580元件的HTMLCollection列出在端部作爲正確長度的長度)長度:0
  • [](空數組)
  • 未定義

所有的代碼都在d3和傳單javascript下面,我正在製作動態標籤。

我已經檢查了所有其他HTMLcollection或NodeList問題處理有點類似的問題,他們導致沒有解決方案。

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

回答

1

解決了我自己的問題:

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