【发布时间】:2017-07-21 13:00:51
【问题描述】:
我想在每个 HTML 表格列的 100 个字符后添加“...”或“>>”图标。单击此图标将在一个简单的弹出窗口中呈现内容 多行框。 “Esc”或单击“X”会关闭该框。
我已经使用 d3.js 解析 CSV 文件动态创建了一个表。下面是我的 HTML 和 JavaScript
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>TableView</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="table-wrapper">
<div id="table-scroll">
<!-- Table goes here -->
</div>
</div>
<script src="http://d3js.org/d3.v3.min.js"></script>
<script type="text/javascript" charset="utf-8" src="js/app.js"></script>
</body>
</html>
app.js
d3.csv("js/tweetBlog.csv", function(error, data) {
var sortAscending = true;
var table = d3.select('#table-wrapper').select('#table-scroll').append('table');
var titles = d3.keys(data[0]);
var headers = table.append('thead').append('tr').selectAll('th')
.data(titles).enter().append('th')
.text(function (d) {
return d;
})
.on('click', function (d) {
headers.attr('class', 'header');
if (sortAscending) {
rows.sort(function(a, b) { return b[d] < a[d]; });
sortAscending = false;
this.className = 'aes';
} else {
rows.sort(function(a, b) { return b[d] > a[d]; });
sortAscending = true;
this.className = 'des';
}
});
var rows = table.append('tbody').selectAll('tr')
.data(data).enter().append('tr');
rows.selectAll('td')
.data(function (d) {
return titles.map(function (k) {
return { 'value': d[k], 'name': k};
});
}).enter()
.append('td')
.attr('data-th', function (d) {
return d.name;
})
.text(function (d) {
return d.value;
});
});
【问题讨论】:
-
你只是looking for the style
text-overflow: ellipsis;吗? -
我试过“文本溢出:省略号”,但它只是隐藏了内容。我想通过单击“...”或“>>”图标来执行操作。
-
NineBerry 我确实看过你提到的 StackOverflow 问题,但它使用的是 jQuery,而这并不是我想要的。谢谢。
-
AakashTakale 在@NineBerry 链接的问题的答案中大部分(如果不是全部?)jQuery 似乎都是本机 JS 的简写方法,所以我认为它会相当易于将它们转换为原生 JS 并使用它们;我只是说,如果这些技术对你有用,你不应该仅仅因为它们是 jQuery 就立即放弃它们
标签: javascript html css d3.js