<html>
<head>
<title>table with sparkline</title>
<script src="d3.min.js"></script>
<style>
.line {
fill: none;
stroke: steelblue;
stroke-width: 1.0px;
}
table {
border-collapse: collapse;
width: 100%;
}
th, td {
padding: 8px;
text-align: left;
border-bottom: 1px solid #ddd;
}
th{
background-color:#f5f5f5;
}
/*tr:hover{background-color:#f5f5f5}
</style>
</head>
<body>
<h4>a table</h4>
<div id="table"></div>
<script>
var columns = ['Fruit', 'Color', 'Lines']
var data = [
['Orange', 'Orange', [1,2,3,1,6]],
['Apple', 'Red', [6,2,6,5,5]],
['Grape', 'Purple', [9,1,2,3,1]]
]
// create table
var table = d3.select("#table").append("table");
var thead = table.append("thead").append("tr");
thead.selectAll("th")
.data(columns)
.enter()
.append("th")
.text(function(d) {
return d;
});
var tbody = table.append("tbody");
var trows = tbody
.selectAll("tr")
.data(data)
.enter()
.append("tr");
var tcells = trows
.selectAll("td")
.data(function(d, i) { return d; })
.enter()
.append("td")
.text(function(d, i) { return d; });
// update (add a column with graphs)
thead.append("th").text('Graphs');
trows.selectAll("td.graph")
//use a class so you don't re-select the existing <td> elements
.data(function(d) {return [d[2]];})
.enter()
.append("td")
.attr("class", "graph")
.each(lines);
// a sparklines plot
function lines(test) {
var width = 100, height = 20;
var data = []
for (i = 0; i < test.length; i++) {
data[i] = {
'x': i,
'y': +test[i]
}
}
var x = d3.scale.linear()
.range([0, width - 10])
.domain([0,5]);
var y = d3.scale.linear()
.range([height, 0])
.domain([0,10]);
var line = d3.svg.line()
.x(function(d) {return x(d.x)})
.y(function(d) {return y(d.y)});
d3.select(this).append('svg')
.attr('width', width)
.attr('height', height)
.append('path')
.attr('class','line')
.datum(data)
.attr('d', line);
}
</script>
</body>
</html>
这是我的代码..我已经使用d3.js创建了表...我只想在column.how中添加按钮,为每行添加按钮? 如果我点击按钮,它将显示警告信息 这里我使用了json格式的数据
答案 0 :(得分:2)
首先制作标题。
thead.append("th").text('Action');
然后向行添加选择器并传递数据,创建td
,然后在td
上创建button
,然后最终注册一个侦听器进行点击。
trows.selectAll("td.button")
//use a class so you don't re-select the existing <td> elements
.data(function(d) {return [d];})
.enter()
.append("td")
.attr("class", "button")
.append("button")
.text(function(d){return "Do Something"})
.on("click", function(d){ console.log(d); alert("hello")});//attach listener
工作代码here
答案 1 :(得分:1)
向您的手机类附加按钮:
var button = $("<button>Button</button>");
button.click(function() {
alert("here i have used data in json format : "+JSON.stringify(data));
});
button.appendTo(".graph");