如何使用javascript打印文本区域中的每一行



我想在div#result中显示文本区域的值,在文本区域中保留换行符,并在每行末尾添加1

以下是我迄今为止所做的努力。它只将1添加到最后一行。

<!DOCTYPE html>
<html>
<head>
<title>Hello World !</title>
</head>
<body>
<textarea rows="10" id="mytext"></textarea>
<button onclick="test()">Click Me</button>
<div id="result"></div>
</body>
<script type="text/javascript">
function test() {
var b = document.getElementById('mytext').value+1;
document.getElementById('result').innerHTML = b.replace(/nr?/g, '<br>');
}
</script>
</html>

您以前的方法不起作用,因为您将1添加到值中,然后通过换行符进行拆分。

相反,通过换行符(n(分割值,然后循环遍历每个项,连接并插入到结果的innerHTML中。

const result = document.getElementById("result");
function test() {
result.innerHTML = "";
document.getElementById('mytext').value
.split("n")
.forEach(e => result.innerHTML += e + "1" + "<br>")
}
<!DOCTYPE html>
<html>
<head>
<title>Hello World !</title>
</head>
<body>
<textarea rows="10" id="mytext"></textarea>
<button onclick="test()">Click Me</button>
<div id="result"></div>
</body>
</html>

与第一个答案一样多的是"OK"-不需要在循环中添加到innerHTML

在某些情况下(不是这么简单(,可能会影响渲染和性能

用这一行代码设置innerHTML一次(为了可读性,拆分为多行

function test() {
document.getElementById("result").innerHTML = 
document.getElementById('mytext').value
.split("n")
.map(v => v + 1)
.join('<br>');
}
<textarea rows="10" id="mytext"></textarea>
<button onclick="test()">Click Me</button>
<div id="result"></div>

您可以执行

const 
myText   = document.querySelector('#my-text')
, myButton = document.querySelector('#my-button')
, pResult  = document.querySelector('#result')
;
myButton.onclick = () =>
{
pResult.innerHTML = myText.value
.split(/nr?/)
.reduce((t,l,i) => // better with a number?
t + `${i+1} - ${l}<br>`
,'') 
}
#my-text {
height : 6em;
}
#result {
margin   : .7em;
padding  : .4em;
height   : 6em;
width    : 10em;
border   : 1px solid lightblue;
resize   : both;
overflow : auto;
}
<textarea id="my-text"></textarea>
<button id="my-button">Click Me</button>
<div id="result"></div>

  • 您可以匹配文本而不是替换新行

示例

function test() {
var b = document.getElementById('mytext').value;
var matchText = b.match(/.+/gi);
var res = document.getElementById('result');
var txt = ""
for(i = 0; i < matchText.length; i++) {
txt += i+1 + ": "+ matchText[i] + "<br>"
}
res.innerHTML = txt
}

最新更新