将类添加到 html 表的特定单元格
Adding class to specific cells of a html table
我正在努力为我的公司自动化一些报告。我们使用R在Excel中汇总数据,然后使用Rmarkdown,knitr和包"htmlTable"的组合来创建HTML。
我目前正在使用 CSS 来修改 HTML 代码的某些部分
markdownToHTML(paste0(basePath,'makeAppendixTableD1.md'),
"appendixTableD1.html",
stylesheet = paste0(basePath,"testStyleSheetUpdated.css"))
其中上面的 HTML 代码输出如下所示:
<table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' >
<tbody>
<tr>
<td style='text-align: center;'>X1</td>
<td style='text-align: center;'>0</td>
</tr>
<tr>
<td style='text-align: center;'>X2</td>
<td style='text-align: center;'>0.35</td>
</tr>
<tr>
<td style='text-align: center;'>X3</td>
<td style='text-align: center;'>0.31</td>
</tr>
</tbody>
</table>
我可以使用CSS轻松更改字体大小或字体系列等属性;但是,对于如何最好地编辑特定列或行,我有点困惑。
例如,我想使 X2 加粗和斜体。但我并不总是知道 X2 在表格中的位置。所以我不能输入CSS来修改第二行,第一个单元格至于另一个表X2可能是第10行,第一个单元格。
编辑:理想情况下,我希望能够编辑X2存在于HTML中的整个<tr>
</tr>
。
目前,我可以使用gsub()
和其他一些字符串函数在 HTML 中找到 X2,然后返回几个字符以插入 class = "X2"。但这涉及相当多的硬编码。
有没有更简单的方法可以使用javaScript来做到这一点?我已经研究了在 R 中使用 xtable 包。似乎没有办法在 R 中使用 htmlTable 包添加类。
使用vanilla JS,您可以执行以下操作:
//grab all td elements in your table
var tds = document.querySelectorAll(".gmisc_table td");
//iterate over each td
for (var i = 0; i < tds.length; i++) {
var text = tds[i].innerText;
//check for your target text
if (text === "X2") {
//add your class to the element containing this text
tds[i].classList.add("X2");
}
}
Pure JS:
Array.prototype.slice.call( document.getElementsByTagName("td"), 0 )
.filter(function(x) {return x.innerHTML.match(/X2/)})
.forEach(function(x) {
x.classList.add('X2') // <td>
x.parentNode.classList.add('OtherClassName') // <tr>
})
最后一个x
是 <td>
的 DOM 表示 ,因此您可以从那里导航到您喜欢的任何地方,就像最后一行对x.parentNode
所做的那样,这是<tr>
......
jQuery 仅在第一行:
$.makeArray($("td"))
.filter(function(x) {return x.innerHTML.match(/X2/)})
.forEach(function(x) {x.classList.add('X2')})
带有jQuery的ES6(由于尚不支持=>
,因此在IE11中不起作用(:
$.makeArray($("td"))
.filter(x => x.innerHTML.match(/X2/))
.forEach(x => x.classList.add('X2'))
如果需要,您可以更改第二行以筛选完全匹配:
.filter(function(x) {return x.innerHTML === 'X2'})
var table = document.getElementsByTagName('table')[0];
var cols = table.getElementsByTagName('td');
for (var i = 0; i < cols.length; i++) {
var col = cols[i];
var content = col.innerText;
// If it starts with 'X':
if (content[0] === 'X') {
col.className = content;
}
}
.X1 { color: red; }
.X2 { color: blue; }
<table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' >
<tbody>
<tr>
<td style='text-align: center;'>X1</td>
<td style='text-align: center;'>0</td>
</tr>
<tr>
<td style='text-align: center;'>X2</td>
<td style='text-align: center;'>0.35</td>
</tr>
<tr>
<td style='text-align: center;'>X3</td>
<td style='text-align: center;'>0.31</td>
</tr>
</tbody>
</table>
相关文章:
- 有没有一种方法可以仅使用HTML/CSS来隐藏基于特定值的数据单元格
- 需要将单元格值复制到html表中的其他单元格中
- Knockout绑定是膨胀的html(表单元格),如何使用javascript创建绑定或从父元素绑定
- 如何比较单元格值和隐藏 html 表中的行
- 使用 javascript 为 HTML 表格单元格指定颜色
- 如何在JS/HTML中将函数输出发送到表单元格
- 单击并用CTRL+C复制值时高亮显示html表格单元格
- TinyMCE - 允许表格单元格元素作为有效的 html
- 如何从表格单元格中删除html的某些部分
- 如何在另一个java脚本函数中访问java脚本中动态html表中单元格的动态赋值
- jQuery从html单元格中读取值
- 获取HTML表中单击的列中第一个单元格和单击的行中第一个单元的内容
- 将类添加到 html 表的特定单元格
- HTML单元格按钮
- 如何创建一个每行列数未知的html表,对齐列,并为每个单元格/行指定一个id
- 如何在 React 中将 html 表单元格数据动态插入到具有动态标题的表中
- 如何访问HTML表格单元格中的选择
- 将鼠标悬停在表格单元格 HTML JavaScript 上时的弹出窗口
- 选择和取消选择表格单元格html/javascript
- 在表格单元格HTML中隐藏/显示长文本