如何使用Jquery和PhantomJS在<p> <hr />元素之间的<p>元素中选择文本

时间:2014-07-23 22:39:13

标签: jquery phantomjs elements

我希望在某些'hr'标签之间输出所有元素的文本。

<hr>
<h2>i need this heading.</h2>
<p>i need this text.</p>
<p>and this one.</p>
<p>and also this one.</p>
<hr>

我尝试使用$('hr:first').nextUntil('hr').text()并使用fs.write输出到文本文件,但文本全部在一行上。我该怎么做并在每一行都有换行符?

2 个答案:

答案 0 :(得分:1)

使用此fsString的输出,在此之前您使用该语句将其写出来。它将使用通用窗口行结束字符("\r\n")连接每个元素的各个文本内容。如果您使用的是不同的行结束类型,则只需将"\r\n"替换为"\n"(通常为* nix)或"\r"(通常是较旧的Mac OS),其余用于其余部分你的文件。

var fsString = "";
$('hr:first').nextUntil('hr').each(function(i,o){
    fsString += $(o).text() + "\r\n";
});

此外,更简洁的方法是将行结束字符添加到现有元素中,然后像以前一样获取所有文本,并以与您现在完全相同的方式使用它。

$('hr:first').nextUntil('hr').append("\r\n").text();

答案 1 :(得分:1)

此方法遍历hr元素之间的所有元素(不确定最后一个元素)并获取文本和puts然后将其附加到字符串str。它在字符串中使用'\r\n'换行符+换行符。在此代码部分之后,您可以使用fs.write编写该字符串。

var str = '';
$('hr:first').nextUntil('hr').each(function(i, e) {
    str += $(e).text() + '\r\n';
});