javascript - D3 添加所需类型的输入

标签 javascript d3.js

首先考虑使用 D3 填充下拉菜单有多么容易:

var options = [
        "option 1",
        "option 2",
        "option 3",
        "option 4"
    ];
    d3.select("#my_select")
        .selectAll("option")
        .data(options)
        .enter().append("option")
        .attr("value", function(d) { return d; })
        .text(function(d) { return d; });

但是,我不太确定如何附加尚未存在的 HTML 用户输入,并且也不需要使用 data() 调用“填充” 。就我而言,我只想为用户附加一个数字输入。我尝试过这个(以及许多类似的变体):

graphGroup.append('input')
    .attr('type','number');

那没用。所以我然后查看了纯 javascript 解决方案,它看起来像这样:

  var newdiv = document.createElement('div');
  newdiv.innerHTML = "New Entry " + " <br><input type='number' name='myInputs[]'>";
  document.getElementById(divName).appendChild(newdiv);

但是,我希望 d3 有一个稍微更优雅的解决方案。原因是,随着我的项目的进展,我的输入附加需求肯定会发生变化。在我的研究过程中,我还没有找到这方面的 d3 示例,因此我非常热​​衷于找出 d3 方法。

最佳答案

你可以像这样直接用 d3 来做。我添加了一个下拉菜单和一个数字 html 输入。

var options = [
  "option 1",
  "option 2",
  "option 3",
  "option 4"
];

var select = d3.select("body")
  .append("div")
  .append("select");

var input = d3.select("body")
    .append("div")
  .append("input")
    .attr("type", "number");

select
  .on("change", function(d) {
    var value = d3.select(this).property("value");
    alert(value);
  });

select.selectAll("option")
  .data(options)
  .enter()
  .append("option")
  .attr("value", function(d) {
    return d;
  })
  .text(function(d) {
    return d;
  });

在此处检查 Fiddle - https://jsfiddle.net/2k5j5xag/

关于javascript - D3 添加所需类型的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43414771/

相关文章:

javascript - 如何修改android & iOS项目,使入口文件成为react native中的普通js文件?

javascript - mediaelement.js:监听从 mep-feature-ads 触发的事件

javascript - jQuery 清除日期选择器字段中的值,绑定(bind)到未选中的复选框

javascript - IE 11 - 无法在本地计算机上的 D3 中加载 json 文件 - 由于同源策略,出现 "SCRIPT 5 Access is Denied"错误

d3.js - 为什么我的 D3 力布局图线延伸成圆圈?

javascript - TypeScript 中的类型级 Catalan 函数

php - 为什么使用 F5 刷新我的网络应用程序非常慢并且挂起,而在地址栏上按 Enter 键会立即刷新页面?

d3.js 在鼠标悬停时将多线图与条形图链接起来

javascript - 使交叉过滤器中的 X 轴动态化

javascript - LeafletJs 只显示一个国家