如何通过输入框中的值来动态添加行

如何通过输入框中的值来动态添加行

问题描述:

我已经使用d3.js版本3创建了散点图。我想创建一个输入框,并且我将通过的任何值,它应该更改水平位置根据那个价值线。如何通过输入框中的值来动态添加行

var yScale = d3.scale.linear() 
    .range([0 + margin.top, height - margin.bottom]) 
    .domain([0, 100]); 
var lineChartY = yScale(100 - 60); 


var x = d3.scale.linear() 
    .range([0, width]); 

var y = d3.scale.linear() 
    .range([height, 0]); 

var y1 = d3.scale.linear() 
    .range([height, 0]); 

var color = d3.scale.category10(); 

var xAxis = d3.svg.axis() 
    .scale(x) 
    .orient("bottom"); 

var yAxis = d3.svg.axis() 
    .scale(y) 
    .orient("left") 

var y1Axis = d3.svg.axis() 
    .scale(y1) 
    .orient("right"); 

var svg = d3.select("body").append("svg") 
    .attr("width", width + margin.left + margin.right) 
    .attr("height", height + margin.top + margin.bottom) 
    .append("g") 
    .attr("transform", "translate(" + margin.left + "," + margin.top + ")"); 


d3.tsv("data.tsv", function(error, data) { 
    if (error) throw error; 

    data.forEach(function(d) { 

    d.WTP = +d.WTP; 
    }); 

    svg.append('line') 
    .style('stroke', 'black') 
    .style('stroke-width', '2px') 
    .attr('x1', 40) 
    .attr('y1', lineChartY) 
    .attr('x2', 880) 
    .attr('y2', lineChartY) 
    .attr("transform", "translate(-40,0)") 

    svg.append("g") 
    .attr("class", "x axis") 
    .attr("transform", "translate(0," + height + ")") 
    .call(xAxis) 

}); 

我工作的链接http://plnkr.co/edit/skDaqPISgXARZyLoFAnb?p=preview

您正在使用的数据集存储在服务器上。有两种方法我能想到的解决这个问题的:

  1. 添加后端代码 - 有提交到某种后端(PHP,Perl中,的NodeJS)的一种形式,操纵然后将文件重新加载页面。

  2. 你把你的数据集并格式化成一个javascript数组。这可能是最简单的方法,但是,一旦重新加载页面,将不会保存任何数据。

还有其他一些方法可以做到,但我可以想到,但是,它们都需要一定的工作量。如果是个人项目,我可能会创建自己的脚本来处理数据文件。如果它会被别人使用,我会建议重新设计一些。

我可能会将数据放入(插入您选择的数据库)并操作数据集。考虑项目的范围和谁正在访问它。