Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript—输入时未格式化textarea的值<;p>;_Javascript_Html - Fatal编程技术网

Javascript—输入时未格式化textarea的值<;p>;

Javascript—输入时未格式化textarea的值<;p>;,javascript,html,Javascript,Html,我试图从文本区域获取内容,并将其放入,然后打印出来,这样我就可以打印整个文本区域。但是,当我获取textarea的值并将其放入中时,它会释放所有格式,因为所有内容看起来都像一个缩小的JS文件。有人知道在复制到标记时如何保持格式吗 我的代码: document.getElementById('bigthing').style.display = 'none'; document.getElementById('printtext').style.display = 'block'; documen

我试图从文本区域获取内容,并将其放入
,然后打印出来,这样我就可以打印整个文本区域。但是,当我获取textarea的值并将其放入
中时,它会释放所有格式,因为所有内容看起来都像一个缩小的JS文件。有人知道在复制到
标记时如何保持格式吗

我的代码:

document.getElementById('bigthing').style.display = 'none';
document.getElementById('printtext').style.display = 'block';
document.getElementById('printtext').innerHTML = document.getElementById('output').value;
window.print();
document.getElementById('printtext').style.display = 'none';
document.getElementById('bigthing').style.display = 'block';

因为在textarea中,内容是一个字符串。换行符类似于“\n”。不像
那样。 当您将其直接指定给段落元素(p)的“innerHTML”时,这些“\n”将被忽略,因为“\”是转义字符。您将看到其余的纯文本

document.getElementById('txtareafieldId').value //let value is aa in two lines => a\na\n
document.getElementById('paraId').innerHTML // it will display as "a a"
注意a和a之间的空格。这是因为忽略了“\n”

替换换行符的正则表达式:

var val =  document.getElementById('txtareafieldId').value;
var fval = val.replace(/\n/g,"<br/>");
document.getElementById('paraId').innerHTML =fval;
var val=document.getElementById('txtareafieldId').value;
var fval=val.replace(/\n/g,“
”); document.getElementById('paraId')。innerHTML=fval;
您可以尝试增加文本区域的高度以包含所有内容,而不是阅读文本区域的内容,并在打印前放入段落:

yourTextArea.style.height = yourTextArea.scrollHeight + "px";

然后你可以在以后更改它。

你能创建一个@RahilWazir函数吗?print()函数在JSFIDLE中似乎不起作用,但是如果你在浏览器中运行它就会起作用。更新后的文件在这里,所以唯一的方法是逐行分析,将“\n”替换为

?或者我可以在文本区域的每行末尾偷偷插入

!但那会很狡猾。。。或在打印前增加文本区域的高度以适应其内容。使用正则表达式替换它们。在答案中添加了该代码段。检查一下。我只使用了
replace(/\n/gi,
,这似乎很有效。谢谢你的帮助。是的,但是这样我打印的页面可以很容易地裸露出来。