如何在D3.js中将点击按钮动态添加到html表中
How to dynamically add click button to an html table in D3.js
现在我有下面的D3代码来更新一个表。第一列由数据中的字符串填充,第二列应该是一个按钮,单击该按钮时会将字符串打印到控制台。相关的非工作代码如下:
function update_table(old_table, data, which_div) {
var columns = ["value", "button"];
table.select("tbody").remove();
var tbody = table.append("tbody");
var rows = tbody.selectAll("tr").data(data).enter().append("tr");
var cells = rows.selectAll("td")
.data(function (d) {
return columns.map(function (column) {
return { column: column, text: d};
});
}).enter()
.append("td")
.html(function (d) {
if (d.column === columns[0]) return d.text;
else if (d.column === columns[1]) {
return "<button onclick="+clickaction(d)+">"+"Click me!</button>";
}
});
return table ;
}
function clickaction(d) {
console.log("hi");
}
每个表中的按钮都显示在屏幕上,但问题是每当更新表时,就会调用console.log("hi")
。单击按钮时不会。我该如何解决此问题?
一种更优雅的方法是附加文本<td>
s,然后附加按钮<td>
s。然后可以将按钮直接附加在第二列中。
// Append the first column, using the data already stored in the rows
rows.append("td").html(function(d){ return d; });
// Append the second column, which has no text but contains a button
// with an onclick function
var buttonColumn = rows.append("td");
buttonColumn.append("button")
.text("Click me!")
.on("click", function(d){ return clickaction(d); });
然而,如果您想使用当前的方法,您可以在<td>
中使用D3附加一个<button>
,这将允许您使用button.on("click", function(){ ... })
:
.html(function (d) {
if (d.column === columns[0]) return d.text;
else if (d.column === columns[1]) {
// Append a button as a side-effect
var button = d3.select(this).append("button")
.text("Click me!")
.on("click", function(){ clickaction(d); })
// Return nothing
return "";
}
});
相关文章:
- 动态按钮输出反应.js
- 表中的动态按钮用于使用Javascript(CodeIgniter)删除/编辑数据
- 动态按钮调用JavaScript函数
- 单击动态按钮时获取ImageData
- 在javascript中显示动态按钮的值
- 如何为同一类的动态按钮设置监听器
- 使用锚标记 A 在网格中创建动态按钮
- 动态按钮启用基于错误组的挖空 js
- 如果两者具有相同的 id,如何使用 jquery 单击动态按钮来删除动态跨度
- 如何使用 jquery 在正在使用 ajax 的动态按钮上触发按钮单击
- 如何在 Gmail 中使用 javascript 在动态按钮中设置图像和字体大小
- 带有jQuery的qTip动态按钮(当前使用选择器)
- 通过 jquery 具有属性的动态按钮
- 创建动态按钮以显示对话框
- TinyMCE 动态按钮/方法
- 动态按钮点击事件仅适用于最后一个按钮
- jQueryUI对话框带有使用回调的动态按钮
- 带有动态按钮和函数的javascript循环
- 在动态按钮单击时调用命名函数时的PreventDefault
- 改变动态按钮的CSS