我怎样才能插入新行/回车到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参考:
你可以连接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;