Textarea到变量:间距

时间:2018-09-08 00:51:48

标签: javascript html

我正在获取文本区域的内容并将其保存在变量中。但是我注意到,当我保存内容时,变量会忽略间距(换行)。我该如何解决。我希望变量存储所有新行和新标签的文本结构。我从文本区域保存内容的代码如下:

let content = document.getElementById('content').value

整个功能如下:

function mail(){
    var options = document.getElementById('users').options
    let content = document.getElementById('content').value
    var emails = []
    var regex = /\*user\*/gi
    for(var i = 2; i < options.length; i++){
        emails.push(options[i].innerHTML)
        content = content.replace(regex, emails[i-2])
        window.open(`mailto:${emails[i-2]}?subject=To ${emails[i-2]}&body=${content}`)
    }     
}

谢谢!!!任何帮助表示赞赏!

2 个答案:

答案 0 :(得分:0)

如果在文本区域中输入了新行,则该变量确实包含新行。请记住,textarea会将文本自动换行以适合它,因此,如果您看到换行的文本,并不意味着文本中会有换行符。

<textarea id="content"></textarea>
<input type="button" value="submit" onclick="msg()">

<script>
function msg() {
    let message = document.getElementById('content').value;
    alert(message);
}
</script>

答案 1 :(得分:0)

实际上,空格和new lines存在,但是因为您将content放在htmlbody{})中,所以它们是不可见的。

一些解决方案:

 let content = document.getElementById('content').value.replace(/\n/g,"<br/>").replace(/ ( +)/g,function(a,b){var s="", i=0; for(;i<b.length;i++)s+="&nbsp;"; return " "+s;});

或者这个:

let content = "<pre>"+document.getElementById('content').value+"</pre>"

或者这个:

let content = "<div style='white-space: pre'>"+document.getElementById('content').value+"</div>"

以上解决方案适用于身体为html的情况。


编辑:

我想这会解决您的问题:

let content = escape(document.getElementById('content').value);