Javascript 从正文中获取所有文本并基于标记进行拆分
我正在创建一个应用程序,其中有一个场景,我正在翻译整个页面文本,现在我想从页面中获取文本 我可以通过Javascript 从正文中获取所有文本并基于标记进行拆分,javascript,jquery,html,split,element,Javascript,Jquery,Html,Split,Element,我正在创建一个应用程序,其中有一个场景,我正在翻译整个页面文本,现在我想从页面中获取文本 我可以通过$('body')简单地获取文本。text() 但在我的场景中,我希望获得所有文本,并在有任何标记结束时将其拆分 就像下面的例子 console.log($('#test').text().split('\n')) 测试p M 瓦卡 新s A. D 要实现所需功能,可以使用递归函数遍历给定容器中的所有元素,并从它们的文本节点检索值 与所需输出唯一不一致的是空节点,上面的示例包括其中的一些,但不
$('body')简单地获取文本。text()
但在我的场景中,我希望获得所有文本,并在有任何标记结束时将其拆分
就像下面的例子
console.log($('#test').text().split('\n'))
测试p
M
瓦卡
新s
A.
D
要实现所需功能,可以使用递归函数遍历给定容器中的所有元素,并从它们的文本节点检索值
与所需输出唯一不一致的是空节点,上面的示例包括其中的一些,但不是全部。您需要实现一些逻辑来确定要删除哪些和保留哪些。你说这是为了翻译,我建议把它们都打折,因为没有什么东西需要翻译。说了这么多,试试这个:
函数getText(el、arr){
arr=arr | |[];
对于(变量i=0;i
测试p
M
瓦卡
新s
A.
D
使用方法
let result=$(“#test”)
.儿童()
.map(函数(){
返回$(this.text())
})
.get()
console.log(结果)
测试p
M
瓦卡
新s
A.
D
在这里,您可以获得子对象()
并使用text()
回调来实现以下功能:
让arr=[];
$('#test').children().text(函数(i,t){
arr.push(t);
});
控制台日志(arr)
测试p
M
瓦卡
新s
A.
D
我有个主意。如果我们对此使用正则表达式呢?我已经为此准备了一个JSFIDLE,看一看,也许你也可以自己修改它
$(文档).ready(函数(){
var bodyHtml=$(“body”).html();
var regex=/(]+>)+(.*)(++/g;
var matches=regex.exec(bodyHtml);
var splitText=[];
while(匹配项!=null){
splitText.push(匹配[2]);
matches=regex.exec(bodyHtml);
}
警报(拆分文本);
});
@CertainPerformance no sir不需要它测试p
后是否需要空节点?如果没有,,这变成了一个简单的递归函数。如果我的div包含任何文本或者我有多个children的tag@IbrahimShaikh一个标记的多个children
我找不到你?如果我的div包含任何文本或我有一个标记的多个children,它将不起作用。我们已经为你发布的问题提供了答案,你可以看到我们的输出将发布的所需输出匹配到OP中,如果您有其他案例,则必须在您的问题中发布它们,或者在特定案例中发布另一个问题。
$(document).ready(function(){
var bodyHtml = $("body").html();
var regex = /(<[^>]+>)+(.*?)(<\/\w*>)+/g;
var matches = regex.exec(bodyHtml);
var splitText = [];
while (matches != null) {
splitText.push(matches[2]);
matches = regex.exec(bodyHtml);
}
alert(splitText);
});