2014-10-01 82 views
0

我目前使用dc製作幾個折線圖。我也只是添加在一個滑塊(我玩d3.slider,但後來發現不同的解決方案)獲取滑塊值 - d3/dc

我希望能使用滑塊來過濾其他圖。有沒有人有關於如何從切片機中獲取選定值的建議,然後過濾?

要篩選我的想法是這樣的:

d3.select("input[type=range]").on("change", function() { 
var gendersel = this.value; 
}); 

var data = _.where(data2, {variable: gendersel}); 

然而,這不工作...

我也在考慮使用crossfilter(可能是聰明)的過濾,但仍有問題越來越滑塊值:

var bytest = ndx.dimension(function(d) { return d.testvar; }); 
bytest.filter([gendersel, gendersel + .5]) 

我的滑塊:

<div style="font-size:14px;font-family:sans-serif">Test Filter: 
<input style="position:relative;top:4px;" type="range" min="1" max="2" value="1"></div> 

我用這個作爲參考: https://www.biostat.wisc.edu/~kbroman/D3/slide_scatter.html

回答

1

VAR gendersel是不是在全球範圍內。您需要在全球範圍內定義它,在全球範圍內使用它,而不是在函數內部:

var gendersel; 
$("input[type=range]").on("change", function() { //I'm not sure what the select() thing is, I just always use $() for selectors, so if you know d3.select works, then use it. 
    gendersel = this.value; 
}); 

var data = _.where(data2, {variable: gendersel}); 

第二個潛在的問題:
如果滑塊是由Java腳本構建,則可能是該元素不存在當這個選擇器是爲你的onchange事件創建的。如果是這樣的話,你將不得不像這樣創建更改事件:

$(".parentOfInputs").on("change", "input[type=range]", function() { 
    gendersel = $(this).value; //also not sure if in your case it should be $(this) or this. Try both. 
}); 

的parentOfInputs必須創建onchange事件之前已經存在的一些元素。

+0

哦,謝謝你的提示。將'gendersel = this.value;'仍然更新全局變量,如果這只是在函數中... ...它似乎並沒有爲我更新(但也許別的東西是錯誤的) – As3adTintin 2014-10-01 20:01:11

+0

我要添加對我的回答有些東西。 – 2014-10-01 21:54:56

+0

我更喜歡使用d3.select,因此您不需要添加jQuery依賴項。 – 2014-10-02 17:14:38