2017-12-12 6 views
0

リストを更新しようとしていますが、更新が正しくないと確信しています。ボタンをクリックすると、HTMLスライダから読み込みます。 newdatasetにするデータは正しいですし、表示する要素の数が正しくなっていますが、newdatasetと同じではありません。D3更新が新しい配列を更新しない

var dataset; 

function yearFilter(min, max) { 
    return function (x) { 
     if (x.YEAR <= max && x.YEAR >= min) return x 
    } 
}; 
d3.csv("./Datasets/Anne_Arundel_County_Crime_Rate_By_Type.csv", function (data) { 
    dataset = data; 

d3.select("body").selectAll("p").data(dataset).enter().append("p").text(function(d){return d.YEAR + " " + d.POPULATION}); 

}); 

function setMinValue(minYear, p1) { 
    var x = document.getElementById(p1); 
    var y = document.getElementById(minYear); 
    x.innerHTML = y.value; 
} 

function setMaxValue(maxYear, p2) { 
    var x = document.getElementById(p2); 
    var y = document.getElementById(maxYear); 
    x.innerHTML = y.value; 
} 

window.onload = function() { 
    setMinValue('minYear', 'p1'); 
    setMaxValue('maxYear', 'p2'); 
} 
document.getElementById("clickMe").onclick = update; 

function settimespanandrun() { 
    var firstYear = parseInt(minYear.value); 
    var lastYear = parseInt(maxYear.value); 
    var years = yearFilter(firstYear, lastYear); 
    var yearFilterDataSet = dataset.filter(years); 
    return yearFilterDataSet; 

    }; 

    function update() { 

     var newdataset = settimespanandrun(); 
     var newData = d3.select("body").selectAll("p").data(newdataset); 
     newData.enter().append("p").text(function (d) {return d.YEAR + " " + d.POPULATION}) 
     newData.exit().remove(); 


    } 
+0

あなたのコードはもうD3 v3のではなく、D3と連携v4のでしょう。先日、これについての回答を書いた:https://stackoverflow.com/a/47744751/5768908 –

答えて

2

私はこれが動作するかどうかをチェックすることができ、あなたのコード内で更新アクションが欠落することができると思う:

var newData = d3.select("body") 
    .selectAll("p") 
    .data(newdataset); 

// update old data 
newData.text(function (d) {return d.YEAR + " " + d.POPULATION}); 
// insert new data 
newData.enter().append("p").text(function (d) {return d.YEAR + " " + d.POPULATION}) 
// Remove extra data 
newData.exit().remove(); 
+0

はい、これはv3とv4の両方で動作します。ありがとう – mike628

関連する問題