在运行时获取数据,例如从文本框获取数据
Getting data at run time, from a text box for example
我对Javascript仍然很陌生,并试图做一些事情:
我确实有一个代码,为我绘制D3.js图表,代码附在下面。
我需要的东西是能够为一些演示目的改变它,这样我可以输入一些值数据集在页面上,在一个文本框中,例如?点击一个按钮,然后根据这些值绘制图表。
当前这些值在代码中是这样硬编码的:
<script type="text/javascript">
//Width and height
var w = 500;
var h = 100;
var barPadding = 1;
var dataset = [ 5, 10, 13, 19, 21, 11, 22, 18, 15, 13,
11, 12, 15, 20, 18, 17, 16, 18, 23, 11 ];
//Create SVG element
var svg1 = d3.select("body")
.append("svg")
.attr("width", w)
.attr("height", h)
svg1.selectAll("rect")
.data(dataset)
.enter()
.append("rect")
.attr("x", function(d, i) {
return i * (w / dataset.length);
})
.attr("y", function(d) {
return h - (d * 4);
})
.attr("width", w / dataset.length - barPadding)
.attr("height", function(d) {
return d * 4;
})
.attr("fill", function(d) {
return "rgb(0, 0, " + (d * 10) + ")";
});
svg1.selectAll("text")
.data(dataset)
.enter()
.append("text")
.text(function(d) {
return d;
})
.attr("text-anchor", "middle")
.attr("x", function(d, i) {
return i * (w / dataset.length) + (w / dataset.length - barPadding) / 2;
})
.attr("y", function(d) {
return h - (d * 4) + 14;
})
.attr("font-family", "sans-serif")
.attr("font-size", "11px")
.attr("fill", "white");
</script>
-
添加一个textarea元素和一个元素来捕捉点击来更新图表。此外,有一个单独的div来包含图表,使得每次更新时更容易删除它:
<div id="chart"></div> <textarea id="values" rows="5"></textarea> <a href="#" id="gen"> Generate Chart </a>
-
用click事件&防止默认事件:
d3.select("#gen").on("click", function(){ d3.event.preventDefault(); ... });
-
删除先前存在的图表:
d3.select("#chart svg").remove()
-
使用textarea中的值更新数据:
var dataset = document.getElementById("values") .value .split(",") .map(function(d){return +d});
显然,这是非常脆弱的,只适合用于演示。用户输入没有被清理、验证等,但如果你只是想测试几个不同数据集的呈现,应该足够好了。
JS小提琴:http://jsfiddle.net/qfS62/
相关文章:
- 使用jquery将mysql数据获取到新的表行中
- 使用createContainer将Meteor数据获取到React Native中时出现问题
- 创建按钮,根据表单字段中的数据获取特定的URL
- 将JSON API数据获取到html
- 将json数据获取到数组中
- 如何将具有多个标签的多个的所有数据获取到一个数组中
- 将状态的 URL 数据获取到模板中
- 如何在jquery中将xml解析数据获取为全局变量
- 在没有JQuery的情况下将JSON数据获取到TVML项目中
- Angular js如何将索引数据获取到另一个模板中
- 如何将PHP Post数据获取到jquery ajax请求中
- 使用javascript中.data()中存储的数据获取变量
- 无法将动态数据获取到 Jquery 饼图中
- 将节点.js neDB 数据获取到变量中
- 更新页面 JSON 数据获取下拉更改
- 将数据绑定到 kendo 下拉列表时,如何将 ajax 响应数据获取到变量
- 画布图像数据获取的值不超过 102,000 个
- 如何通过 JQuery JSON 数据获取 CheckBox(@Html.CheckBox) 的值
- 从html到jquery再到php,再从php到jquery到html,将数据传递到php文件并将数据获取到php文件中
- 如何将Jquery.get中的数据获取到Javascript中的一个变量中