如何使用javascript或jQuery替换网页中TD元素内的文本中的序列ASCII 13 ASCII 10 - (CR LF DASH或/ r / n-)? stackoverflow和其他地方也存在类似的问题,但列出的解决方案不适用于此特定方案。传入的HTML是由我的客户遗留软件动态生成的,不会被更改,但它引用了我可以更改的javascript文件。下面给出了页面的缩短版本。实际页面包含0到20行数据,其中一些包含多行。我的用户在Internet Explorer 8上,以下两行中的任何一行都不起作用。我试过更换回车只是替换换行。我从javascript和jQuery尝试过这个,没有任何明显的效果。当我从Internet Explorer 8保存页面并在十六进制编辑器中查看时,回车符和换行符存在于客户端中。问题的症结在于将文本中的/ n暴露给JavaScript。
我想执行此替换,因为我希望只要序列/ r / n-存在于元素的页面中,两行文本就会出现在显示的输出中。
请注意,我已经包含了两个版本的替换版本,一个jQuery和一个JavaScript。我也不想做它。
<html>
<head>
<title>Page Testing </title>
<script src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('td').each(function () {
$this = $(this);
$this.html($this.html().replace(/\r\n\-/g, "<br/>-"));
this.innerHTML = (this.innerHTML.replace(/\r\n\-/g, "<br/>-"));
});
});
</script>
</head>
<body>
<table>
<tbody>
<tr>
<td>-First Content
-Second Line of Content</td>
<td>-How I want it to look<br/>-After the transformation</td>
</tr>
</tbody>
</table>
</body>
</html>
答案 0 :(得分:11)
你的问题是你只关心在不同的行上显示它们,而不是专门关于替换\ r \ n。
你可以考虑使用css来解决这个问题。
<style>
tr {
white-space:pre-line;
}
</style>
答案 1 :(得分:1)
这适用于您的具体情况:
$this.html($this.html().replace(/\s+\-/g, "<br /> -"));
不是寻找CRLF字符,而是使用任何空格,后跟短划线。如果您的内容中有空格,则它们也会添加br标记。
IE 8对换行有一些奇怪的行为。如果我得到解释,我会更新。
答案 2 :(得分:0)
你可以尝试
$this.html().replace(/[\n\r]+\-/g, "<br/>-")
替换了换行符和回车符。
答案 3 :(得分:0)
你只是替换了\ n-,但你说你要替换的字符序列是\ r \ n -
尝试将\ r放入替换表达式。
\ r \ n字符虽然不是通常支持的windows / linux换行符,但通常仍会在浏览器/源查看器中显示为换行符,以便迎合每个人。