Javascript 使用<;提取段落的第n行;br>;
我正在尝试创建一个函数,该函数将以HTML格式显示一个段落,如下所示: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
<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]
}