求助:将\n转换为<br/>的JavaScript函数无法正常工作
问题分析与解决方案
嗨,我来帮你看看这个问题~你的代码里有两个关键问题导致转换没生效:
1. 字符串的不可变性
JavaScript里的字符串是不可变的,replace()方法不会直接修改原字符串,而是返回一个替换后的新字符串。所以你需要把替换后的结果重新赋值给text变量,不然原字符串根本没变化。
2. 只替换了第一个换行
用普通字符串"\n"作为替换目标时,replace()只会替换第一个匹配到的换行符。要替换所有的换行,得用全局正则表达式/\n/g(g表示全局匹配)。
修正后的代码
function format() { var text = document.getElementById("formatArea").value; // 用全局正则替换所有换行,并且把结果赋值回text text = text.replace(/\n/g, "<br/>"); document.getElementById("resultArea").value = text; }
对应的HTML部分可以保持不变:
<textarea rows="20" cols="80" id="formatArea"></textarea> <textarea rows="20" cols="80" id="resultArea"></textarea> <button onclick="format()">Click to create HTML breaks</button>
另一种可选方法:split + join
如果你对正则不太熟悉,也可以用split()把字符串按换行分割成数组,再用join()把数组用<br/>拼接起来,效果是一样的:
text = text.split("\n").join("<br/>");
这样修改后,点击按钮就能把所有换行符都转换成HTML的换行标签啦~
内容的提问来源于stack exchange,提问作者ITGuru
相关产品推荐
相关产品推荐

