我怎样才能插入新行/回车到element.textContent?

听起来很愚蠢,我还没有find合适的答案。

比方说,我想dynamic地创build一个新的DOM元素,并用JSstring文字填充textContent / innerText。
string很长,我想分成三个块:

var h1 = document.createElement("h1"); h1.textContent = "This is a very long string and I would like to insert a carriage return HERE... moreover, I would like to insert another carriage return HERE... so this text will display in a new line"; 

问题是,如果我写

 h1.textContent = "...I would like to insert a carriage return here... \n"; 

它不工作,可能是因为浏览器认为'\ n'是纯文本并显示它(\ r也不工作)。

另一方面,我可以改变h1.innerHTML而不是textContent并写:

 h1.innerHTML = "...I would like to insert a carriage return here...<br />"; 

这里<br />会做这个工作,但这样做不仅会取代文本内容,还会取代我的h1的所有HTML内容,这不是我想要的。

有没有简单的方法来解决我的问题?
我不会诉诸创build多个块元素只是为了在不同的行上的文字。
任何想法将不胜感激。
提前致谢。

我很久以前就知道这个问题了。

我前几天也遇到了类似的问题,将json格式的web服务的值传递给table cell contentText

因为值是以格式传递的,例如"text row1\r\ntext row2"等等。

对于textContent新行,您必须使用\r\n ,最后,我必须使用css white-space: pre-line; (文字将在必要的时候换行,换行),一切顺利。

或者,您只能使用white-space: pre; 然后文本将只换行(在这种情况下\r\n )。

所以,有一个例子是如何在换行符上用换行来解决它:

 var h1 = document.createElement("h1"); //setting this css style solving problem with new line in textContent h1.setAttribute('style', 'white-space: pre;'); //add \r\n in text everywhere You want for line-break (new line) h1.textContent = "This is a very long string and I would like to insert a carriage return \r\n..."; h1.textContent += "moreover, I would like to insert another carriage return \r\n..."; h1.textContent += "so this text will display in a new line"; document.body.appendChild(h1); 

我刚才碰到了这个。 我发现一个很好的解决scheme是使用回车符(代码13)的ASCII表示。 JavaScript有一个方便的function,称为String.fromCharCode() ,它生成一个ASCII码的string版本,或者用逗号分开的多个代码。 在我的情况下,我需要从一个长string生成一个CSV文件,并将其写入文本区域。 我需要能够从文本区域中剪切文本并将其保存到记事本中。 当我尝试使用<br />方法时,它不会保留回车,但是,使用fromCharCode方法,它确实保留了回报。 看到我的代码如下:

 h1.innerHTML += "...I would like to insert a carriage return here..." + String.fromCharCode(13); h1.innerHTML += "Ant the other line here..." + String.fromCharCode(13); h1.innerHTML += "And so on..." + String.fromCharCode(13); h1.innerHTML += "This prints hello: " + String.fromCharCode(72,69,76,76,79); 

在这里看到这个方法的更多细节: w3Schools-fromCharCode()

ASCII码见ASCII码: ASCII码

您可以使用正则expression式将“\ n”或“\ n \ r”replace为“<br />”。

你有这个:

 var h1 = document.createElement("h1"); h1.textContent = "This is a very long string and I would like to insert a carriage return HERE... moreover, I would like to insert another carriage return HERE... so this text will display in a new line"; 

你可以像这样replace你的angular色:

 h1.innerHTML = h1.innerHTML.replace(/\n\r?/g, '<br />'); 

检查String和Regex对象的javascript参考:

http://www.w3schools.com/jsref/jsref_replace.asp

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

你可以连接string…

 h1.innerHTML += "...I would like to insert a carriage return here...<br />"; h1.innerHTML += "Ant the other line here... <br />"; h1.innerHTML += "And so on...<br />"; 

的jsfiddle。

使用element.innerHTML="some \\\\n some";

上述解决scheme都不适合我。 我试图添加一个换行符和额外的文本到一个<p>元素。 我通常使用Firefox,但我确实需要浏览器兼容性。 我读到只有Firefox支持textContent属性,只有Internet Explorer支持innerText属性,但都支持innerHTML属性。 然而,既不会添加<br />也不\n\r\n任何这些属性导致一个新的行。 但是,下面的工作:

 <html> <body> <script type="text/javascript"> function modifyParagraph() { var p; p=document.getElementById("paragraphID"); p.appendChild(document.createElement("br")); p.appendChild(document.createTextNode("Additional text.")); } </script> <p id="paragraphID">Original text.</p> <input type="button" id="pbutton" value="Modify Paragraph" onClick="modifyParagraph()" /> </body> </html> 

我发现插入\\n作品。 也就是说,你逃脱了逃脱的新行字符

下面的代码运行良好(在Firefox,IE和Chrome上):

 var display_out = "This is line 1" + "<br>" + "This is line 2"; document.getElementById("demo").innerHTML = display_out;