使用javascript(不是php)将<br/>转成换行符

时间:2013-03-25 16:26:43

标签: javascript jquery html string line-breaks

我需要从带有段落和跨度等的div中提取文本并将其放入textarea中。我只需要加载文本,而不是HTML。

为此,我可以使用:

loadtext = $('#mydiv').text();

但是,我需要保留换行符。

为此,我正在做:

loadtext = $('#mydiv').text().replace(/<br>/gm, '\r\n');

但它似乎不起作用,因为当我将该文本加载到textarea时,它都是平坦的,没有换行符。我做错了吗?

2 个答案:

答案 0 :(得分:5)

$('#mydiv').text()已被删除所有HTML,包括<br>元素,因此这不起作用。您需要修改#mydiv元素的HTML并替换所有<br/>元素,然后检索文本。

$('#mydiv').find('br').each(function(){
    $(this).after("\n")
           .remove();
});
var loadtext = $("#mydiv").text();

答案 1 :(得分:1)

另一种解决方案是使用从未添加到文档中的中间元素。

var html = $('#mydiv').html(); // e.g. '<p>line 1</p><br><br><p>line 2</p>'
var text = $('<div>').html(html.replace(/<br\/?>/g, '\n')).text();
/* text =
"line 1

line 2" 
*/
$('#mytextarea').text(text);

这支持<br>(HTML)和<br/>(XHTML)。