D3.js 样式和 class 覆盖不符合我的预期
D3.js style and class override not work as my expectation
我可以知道为什么我的 class “bold-header” 样式没有覆盖到 table 的第一行 <tr>
吗?
HTML:
<style>
.bold-header{
background-color:navy;
color:white;
}
</style>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
</tr>
<tr>
<td>001</td>
<td>John</td>
</tr>
<tr>
<td>002</td>
<td>Alex</td>
</tr>
<tr>
<td>003</td>
<td>Maxwell</td>
</tr>
</table>
脚本:
d3.select("table").selectAll("td").style("background-color", "lightblue").style("width", "100px");
d3.select("table").select("tr").classed("bold-header", true);
我期望这样的结果:
my expectation
但它给了我这个:
actual result
背景颜色不起作用,因为我们需要在第一行的 <td>
元素上设置背景颜色。在您的代码中,您没有 selected 相应的 td's
.
第二行JS代码需要做如下改动:
d3.select("table").select("tr").selectAll("td").classed("bold-header", true);
更新
我已经理解问题并更新了代码,这是您的代码无法正常工作的另一个原因,因为您的浅蓝色覆盖了海军色。因此,我建议您明智地 select header td 标签和 body td 标签。请看下面的工作代码
d3.select("table").selectAll("tr:not(:first-child)").style("background-color", "lightblue").style("width", "100px");
d3.select("table").select("tr").classed("bold-header", true);
.bold-header{
background-color:navy;
color:white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
</tr>
<tr>
<td>001</td>
<td>John</td>
</tr>
<tr>
<td>002</td>
<td>Alex</td>
</tr>
<tr>
<td>003</td>
<td>Maxwell</td>
</tr>
</table>
我可以知道为什么我的 class “bold-header” 样式没有覆盖到 table 的第一行 <tr>
吗?
HTML:
<style>
.bold-header{
background-color:navy;
color:white;
}
</style>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
</tr>
<tr>
<td>001</td>
<td>John</td>
</tr>
<tr>
<td>002</td>
<td>Alex</td>
</tr>
<tr>
<td>003</td>
<td>Maxwell</td>
</tr>
</table>
脚本:
d3.select("table").selectAll("td").style("background-color", "lightblue").style("width", "100px");
d3.select("table").select("tr").classed("bold-header", true);
我期望这样的结果: my expectation
但它给了我这个: actual result
背景颜色不起作用,因为我们需要在第一行的 <td>
元素上设置背景颜色。在您的代码中,您没有 selected 相应的 td's
.
第二行JS代码需要做如下改动:
d3.select("table").select("tr").selectAll("td").classed("bold-header", true);
更新
我已经理解问题并更新了代码,这是您的代码无法正常工作的另一个原因,因为您的浅蓝色覆盖了海军色。因此,我建议您明智地 select header td 标签和 body td 标签。请看下面的工作代码
d3.select("table").selectAll("tr:not(:first-child)").style("background-color", "lightblue").style("width", "100px");
d3.select("table").select("tr").classed("bold-header", true);
.bold-header{
background-color:navy;
color:white;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<table border="1">
<tr>
<td>ID</td>
<td>Name</td>
</tr>
<tr>
<td>001</td>
<td>John</td>
</tr>
<tr>
<td>002</td>
<td>Alex</td>
</tr>
<tr>
<td>003</td>
<td>Maxwell</td>
</tr>
</table>