You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让JavaScript DataTables显示原始字符串而非解析转义字符?

如何在DataTables中完全展示原始文本(含转义字符/代码标签)

问题核心:要让DataTables原样显示CSV里的所有内容,包括转义字符、HTML标签/代码,且不能修改原始文本本身。之前用String.raw无效,因为DataTables会自动解析HTML内容。

解决方案:强制DataTables以纯文本渲染单元格

DataTables默认会把单元格内容当作HTML渲染,所以要通过配置或手动转义,让它把所有内容当作纯文本输出。有两种可靠方法:

方法1:初始化时配置列的render函数

在DataTables初始化时,给目标列指定render函数,用jQuery的text()方法自动转义所有特殊字符:

var sample = '<i>I</i> & <b>B</b>';

// 初始化DataTables时配置列的渲染规则
var data_table = $("#data-table").DataTable({
  columns: [
    { 
      data: 0,
      render: function(data) {
        // 用text()方法转义所有HTML特殊字符,再转成HTML字符串返回
        return $('<div>').text(data).html();
      }
    }
  ]
});

function redraw(sample) {
  data_table.clear();
  data_table.row.add([sample]);
  data_table.draw();
}

i.value = sample;
i.oninput();

方法2:添加行时插入文本节点

直接创建纯文本节点插入单元格,避免DataTables解析HTML:

var sample = '&lt;i&gt;I&lt;/i&gt; &amp;amp; &lt;b&gt;B&lt;/b&gt;';

var data_table = $("#data-table").DataTable();

function redraw(sample) {
  data_table.clear();
  // 创建纯文本节点,确保内容不被解析为HTML
  var textNode = document.createTextNode(sample);
  // 把文本节点放到td元素里
  var tdElement = $('<td>').append(textNode);
  // 将td的HTML内容加入DataTables
  data_table.row.add([tdElement[0].outerHTML]);
  data_table.draw();
}

i.value = sample;
i.oninput();

为什么之前的String.raw没用?

String.raw只是处理JavaScript模板字符串的转义逻辑,比如避免把\n解析成换行,但它管不了DataTables的渲染规则——DataTables拿到字符串后,默认会把它当作HTML解析,所以哪怕你传的是&lt;b&gt;,它也会自动转换成<b>标签并渲染成加粗效果。而上面的两种方法,都是通过转义特殊字符,让浏览器把所有内容当作纯文本显示,完全保留原始内容的格式。

对应的HTML代码:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js"></script>
<link href="https://nightly.datatables.net/css/dataTables.dataTables.css" rel="stylesheet" type="text/css" />
<script src="https://nightly.datatables.net/js/dataTables.js"></script>

Test:<input id="i" type="text" oninput="redraw(value)" size="50">

<div class="container">
  <table border id="data-table" width="100%">
    <thead>
      <tr>
        <th>default</th>
      </tr>
    </thead>
  </table>
</div>

内容的提问来源于stack exchange,提问作者magnawhale

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 18:26:14