【问题标题】:Check if text in cell is bold检查单元格中的文本是否为粗体
【发布时间】:2018-09-11 00:52:56
【问题描述】:

我有一个 html 表格。有些单元格是粗体,有些是正常的。如何检查某个单元格是否为粗体(例如 i、j)并获取该单元格的文本而不带标签。

单元格只能包含文本。如果它是粗体 - 它应该包含标签<b>。例如:

<tr>
<td>
Not bold text
</td>
<td>
<b> Bold text </b>
</td>
</tr>

PS 我不能使用 class 或 id 属性。
PSS 如果没有 jQuery 代码会更好,我们暂时不用

【问题讨论】:

  • 请发布一些相关代码(您的 html 表):)
  • 我们不知道这些单元格的结构:您能给我们提供一些例子吗?粗体文本可以使用标准 HTML 标签(如&lt;strong&gt;&lt;b&gt;)或通过样式表呈现。

标签: javascript html-table


【解决方案1】:

查看此答案如何获取对单元格的引用:https://stackoverflow.com/a/3052862/34088

您可以使用cell.firstChild 获得第一个孩子。这为您提供了一个文本节点或 &lt;B&gt; 节点。您可以使用node.nodeType 进行检查,对于 DOM 节点为 1,对于文本节点为 3。这给出了:

function isBold(table, rowIdx, columnIdx) {
    var row = table.rows[rowIdx];
    var cell = row.cells[columnIdx];
    var node = cell.firstChild;
    if( node.nodeType === 3 ) {
        return false;
    }

    return node.nodeName === 'b' || node.nodeName === 'B';
}

【讨论】:

  • 表格单元格中有多个标签怎么样?我想你只会检测到第一个标签。像&lt;tr&gt;&lt;td&gt;&lt;i&gt;...&lt;/i&gt;&lt;b&gt;...&lt;/b&gt;&lt;/td&gt;&lt;/tr&gt; 这样的东西会返回false
  • OP 只想要第一个标签。
【解决方案2】:

使用 css font-weight 属性检测文本是否为粗体:

if ($("#td-id").css("font-weight") == "bold") {
  var boldText = $("#td-id").html();
  // Text is bold
}

如果不使用css,表格单元格内容内必须有&lt;strong&gt;-tag(或&lt;b&gt;-tag)。您可以使用以下代码提取粗体文本:

var boldText = $("#td-id strong").html();
if (boldText != NULL) {
   // Text is bold
}

【讨论】:

    【解决方案3】:

    这完全取决于您的 HTML。如果您使用&lt;b&gt;&lt;strong&gt; 标签,那么您可以轻松地从这些单元格中获取文本:$('TD strong').text();

    如果您通过 CSS 类使文本变为粗体,那么您需要 css 类:$('TD.classForBoldText').text();

    但是,如果您只是通过泛化 css(例如 TD { font-weight: bold; })将文本加粗,那么您将无法获取特定单元格的文本。

    【讨论】:

      猜你喜欢
      • 2019-10-08
      • 2020-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      相关资源
      最近更新 更多