Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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 使用<;提取段落的第n行;br>;_Javascript_Html - Fatal编程技术网

Javascript 使用<;提取段落的第n行;br>;

Javascript 使用<;提取段落的第n行;br>;,javascript,html,Javascript,Html,我正在尝试创建一个函数,该函数将以HTML格式显示一个段落,如下所示: <p> One<br> Two<br> Three<br> Four<br> </p> 有什么想法吗?谢谢 实现这一目标的一种方法 var para = document.getElementsbyTagName('p')[0]; var lines = para.split('\n') 如果你想要特定的文本,除了你可以进一步去索引 lines[4

我正在尝试创建一个函数,该函数将以HTML格式显示一个段落,如下所示:

<p>
One<br>
Two<br>
Three<br>
Four<br>
</p>

有什么想法吗?谢谢

实现这一目标的一种方法

var para = document.getElementsbyTagName('p')[0];

var lines = para.split('\n')
如果你想要特定的文本,除了你可以进一步去索引

lines[4].split('<br>')[0];
行[4]。拆分(“
”)[0];

说了你试图达到的效果不好,你应该使用span或类似的方法。

如果你想逐行获取文本,你不需要break标记。您只需要在文本本身中使用换行符。您可以使用如下函数:

function getTextByLine(target, line) {
  var text = document.querySelector(target).innerHTML
  return text.trim().split('\n')[line - 1]
}
在jsfiddle上测试它


更新 如果您想使用断开标记,也可以这样做

function getTextByLine(target, line) {
  var text = document.querySelector(target).innerHTML
  var lines = text.trim().split('<br>').filter(function(str) {
    return str !== '<br>'
  })
  return lines[line - 1]
}
函数getTextByLine(目标,行){ var text=document.querySelector(target.innerHTML) var lines=text.trim().split(“
”).filter(函数(str){ 返回str!='
' }) 返回行[第1行] }
小提琴。

我猜你是在DOM中做这件事的。如果有简单的文本节点被BR元素分割,那么可以找到第n个BR并将文本附加到它的前一个同级(即前一个文本节点)中

您可能希望添加更多逻辑来检查它是否为文本节点,等等,但下面显示了基本原理:

/*修改P行索引处的文本,并分隔行
**通过BR元素。
**行号从1开始。
**@param{number}索引-要修改的行号
**@param{string}text-要附加到行的文本
*/
函数insertText(索引,文本){
//接电话
var p=document.getElementsByTagName('p')[0];
var brs=p.getElementsByTagName('br');
var节点;
//检查索引是否在范围内
如果(索引<1 | |索引>brs.length-1){
警报('行号必须是1到'+(brs.length-1)之间的整数);
返回;
}
//附加文本
node=brs[index-1]。上一个同级节点;
node.nodeValue+=文本;
}

一个
两个
三个
四个


将此文本:添加到第行。
插入文本
此函数的预期输出是什么?您尝试过什么?您是否会手动将打断标记放置在段落的不同行上?断开标记不是为此目的而设计的。“您不需要断开标记”-除非它们是用于显示目的。确定。如果这就是你分割内容的方式。因此,答案中有两种选择。
function getTextByLine(target, line) {
  var text = document.querySelector(target).innerHTML
  var lines = text.trim().split('<br>').filter(function(str) {
    return str !== '<br>'
  })
  return lines[line - 1]
}