如何使用jQuery用\ r \ n替换所有<br />

托马索·阿尔比诺尼(Tomaso Albinoni)

我正在使用此代码将表另存为CSV(我对其进行了一些更改,以包括标题和排除隐藏行)。表单元格中的某个换行符丢失了,但我想将其保留为\ r \ n。在线上有很多类似的问题,但是我仍然觉得jQuery有点神秘,以某种方式,我一直无法找到这个希望的简单问题的解决方案。

function exportTableToCSV($table, delimiter) {

    var $rows = $table.find('tr:visible');

    // Temporary delimiter characters unlikely to be typed by keyboard
    // This is to avoid accidentally splitting the actual contents
    var tmpColDelim = String.fromCharCode(11), // vertical tab character
    tmpRowDelim = String.fromCharCode(0), // null character

    // actual delimiter characters for CSV format
    colDelim = '"' + delimiter + '"',
    rowDelim = '"\r\n"',

    // Grab text from table into CSV formatted string
    csv = '"' + $rows.map(function (i, row) {
        var $row = $(row),
        $cols = $row.find('td, th');

        return $cols.map(function (j, col) {
            var $col = $(col),
            text = $col.text();

            return text.replace(/"/g, '""'); // escape double quotes

        }).get().join(tmpColDelim);

    }).get().join(tmpRowDelim)
    .split(tmpRowDelim).join(rowDelim)
    .split(tmpColDelim).join(colDelim) + '"',

    // Data URI
    csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
    return csvData;
}
TJ人群

这是br元素被剥夺的地方:

var $col = $(col),
    text = $col.text();

一种解决方案是用标记替换它们,然后将标记替换为\r\n

var $col, text;
      
$col = $(col).clone();
$col.find("br").replaceWith("<div>{{MARKER}}</div>");
text = $col.text().replace(/{{MARKER}}/g, "\r\n");

  • 克隆元素,这样我们就可以在不更改文档的情况下对其进行更改

  • 查找其中的所有br元素

  • 替换它们中的每一个div{{MARKER}}它里面

  • 获取文本,这将有{{MARKER}}它在br小号曾经是

  • 替换{{MARKER}}\r\n

function exportTableToCSV($table, delimiter) {

    var $rows = $table.find('tr:visible');

    // Temporary delimiter characters unlikely to be typed by keyboard
    // This is to avoid accidentally splitting the actual contents
    var tmpColDelim = String.fromCharCode(11), // vertical tab character
    tmpRowDelim = String.fromCharCode(0), // null character

    // actual delimiter characters for CSV format
    colDelim = '"' + delimiter + '"',
    rowDelim = '"\r\n"',

    // Grab text from table into CSV formatted string
    csv = '"' + $rows.map(function (i, row) {
        var $row = $(row),
        $cols = $row.find('td, th');

        return $cols.map(function (j, col) {
            var $col, text;
          
            $col = $(col).clone();
            $col.find("br").replaceWith("<div>{{MARKER}}</div>");
            text = $col.text().replace(/{{MARKER}}/g, "\r\n");

            return text.replace(/"/g, '""'); // escape double quotes

        }).get().join(tmpColDelim);

    }).get().join(tmpRowDelim)
    .split(tmpRowDelim).join(rowDelim)
    .split(tmpColDelim).join(colDelim) + '"',

    // Data URI
    csvData = 'data:application/csv;charset=utf-8,' + encodeURIComponent(csv);
    return csvData;
}

console.log(exportTableToCSV($("table"), ","));
table {
  border-collapse: collapse;
  border: 1px solid black;
}
td {
  border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<table>
  <tbody>
    <tr>
      <td>Testing</td>
      <td>One</td>
      <td>Two and<br>three</td>
    </tr>
  </tbody>
</table>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何用\ n替换</br>和<br/>?

来自分类Dev

如何用\ n替换</br>和<br/>?

来自分类Dev

jQuery用<br>替换\ n HTML无法呈现<br>

来自分类Dev

jQuery用<br />替换\ n吗?

来自分类Dev

用<br>标记替换\ n

来自分类Dev

多个<br /> <br> <br/> \ r \ n出现需要替换为<br />

来自分类Dev

用<br>替换

来自分类Dev

R:如何从文本数据中删除\ n和<br />

来自分类Dev

如何使用Komodo Edit将所有\ r \ n替换为\ n

来自分类Dev

将\ r \ n替换为<br />作为文本

来自分类Dev

如何替换所有&nbsp; 和<br>从javascript中的字符串?

来自分类Dev

str_replace不是用\ r \ n代替<br>而是\\ r \\ n

来自分类Dev

str_replace不是用\ r \ n代替<br>而是\\ r \\ n

来自分类Dev

如何同时替换<br> </br>和删除href属性?

来自分类Dev

如何使用php修剪所有前导/后缀<br>代码

来自分类Dev

php mail () /r/n and <br> have no effect

来自分类Dev

php mail()/ r / n和<br>无效

来自分类Dev

php mail()/ r / n和<br>无效

来自分类Dev

将\ n或\ r更改为<br/>

来自分类Dev

XML / XSL用<br/>替换空格

来自分类Dev

在日期上用<br />替换空格

来自分类Dev

用javascript替换多个<br>标签

来自分类Dev

使用 javascript 用换行符替换 html <br> 元素

来自分类Dev

jQuery-用换行符替换换行符<br /> \ n

来自分类Dev

仅使用Java脚本从<div>删除所有<br>

来自分类Dev

在我使用$ sce.trustAsHtml()的模型变量上用<br>标记替换\ n

来自分类Dev

用R中的所有列名称替换多个句点

来自分类Dev

将所有<br>标记替换为javascript中的空格

来自分类Dev

XSL:用另一个字符替换<br> <br/>