2017-05-04 61 views
0

我在d3.js中有一個下拉菜單,我想從選定的選項中獲取索引。這是一個有點超過50家飛行公司的名單,而現在我有這樣的:如何從d3中的下拉菜單中獲取所選索引

function choixCompagnie(){ 
    let compagnieChoisie = d3.select(this).property('value') 
    } 

此功能激活時有上落的改變了,就像這樣:

d3.select("#selectCompagnie") .on("change",choixCompagnie)

property('value')意味着,例如,如果我點擊我的下拉菜單中的第一行,即Aer Lingus,則我的compagnieChoisie變量將獲得值Aer Lingus而不是0

我需要它,因爲我需要訪問一些公司的公司,我的對象是在一個數組中。所以在我的數據庫中,我需要訪問像data[index].randomProperty這樣的屬性,而不是像這樣的​​,因爲公司名稱已經是屬性。

我不知道這是否有道理,對不起,如果我使用了錯誤的術語,我是相當新的編碼。

感謝您的幫助!

編輯:這裏是一個工作示例http://blockbuilder.org/ArnaudStephanUNIL/a18332a561579eb929091faaff91fb6f,在下拉得到值而不是指數

回答

0

我找到了一個更好,更簡單的方法從下跌的景氣指數下拉菜單:

<select id="selectOptions"></select> 

一旦你初始化你的下拉菜單,你只需要做到這一點:

var options = ["option1","option2"]; 

options.forEach(function(d,i){ 
    d3.select("#selectOptions") 
     .append("option") 
     .attr("value",i) 
     .text(d); 
    }) 
0

你應該像這樣訪問您的數據:

function choixCompagnie(){ 
    let compagnieChoisie = d3.select(this).property('value') 
    console.log(data.find(d => d.compagnie === compagnieChoisie).accidents); 
} 
+0

謝謝!我發現了另一種使用d3.nest的方法,但它看起來像你的更優雅:) ''d3.nest() .key(d => d.compagnie) .map(data);' –

相關問題