Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 从正文中获取所有文本并基于标记进行拆分_Javascript_Jquery_Html_Split_Element - Fatal编程技术网

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);
});