2014-08-27 116 views
0

我目前有一個下拉菜單,並希望我的圖形使用基於下拉選擇的數據。我不確定如何設置我的更改功能(我認爲這是解決方案,如果我錯了,請糾正我)。D3:參考下拉菜單選擇

下拉:

var menu = d3.select("#projection-menu") 
.on("change", change); 

menu.selectall("option") 
    .data(options) 
.enter().append("option") 
    .text(function(d) {return d;}); 

function change() { 
// what do i put here?; 
} 

那麼我想根據該選擇

data = _.where(data, {category: drop-down-selection}); 

我一直在四處尋找改變我的數據,並試圖像:

function change() { 
var drop-down-selection = d3.select("#projection-menu").node().value; 
} 

但唉,沒有工作

謝謝!乾杯

哦,這都是在d3.csv("test.csv", function(data) {之內,因爲我從數據集中提取下拉值。

回答

0

所以我不知道這是最好的方式添加事件到每一個,但我結束了:

d3.csv("test7.csv", function(data1) { 

//Dropdown Menu 
var a = ["Select one"]; 

data1.forEach(function(d) { 
a.push(d.risk) 
}); 

var arrayUnique = _.uniq(a); 

var options = arrayUnique; 

var menu = d3.select("#projection-menu") 
.on("change", change); 

menu.selectAll("option") 
    .data(options) 
.enter().append("option") 
    .text(function(d) { return d;}); 

,然後調用相同的CSV改變功能後,再次使用_.where

function change() { 
d3.csv("test7.csv", function(data2){ 
var sel = d3.select("#projection-menu").property("value"); 
d3.selectAll("div").remove(); 
var data = _.where(data2, {risk: sel}); 

我最初只是嘗試使用var data = _.where(data1, {risk: sel});但由於某種原因,這將無法正常工作。它會讓我加載每個選項一次,但如果我嘗試返回到先前的選擇,則不會看到數據文件。

0

如果在下拉列表中的每個元素都有一個id,你可以通過使用

document.getElementById("item-id-name").addEventListener("click",function(){ 
//do some stuff 
},false);