gpt4 book ai didi

Javascript 无法从 HTML 中提取文本

转载 作者:行者123 更新时间:2023-11-30 08:55:17 24 4
gpt4 key购买 nike

我做这个是为了尝试提取文本。

<script type = "text/javascript">
function extractText(node){
var all = "";
for (node=node.firstChild;node;node=node.nextSibling){
alert(node.nodeValue + " = " + node.nodeType);
if (node.nodeType == 3){
all += node.nodeValue
}
}
alert(all);
}
</script>

它位于 html 文档的头部。 body 看起来是这样的……

<body onload = "extractText(document.body)">
Stuff
<b>text</b>
<script>
var x = 1;
</script>
</body>

问题是 alert(all); 只显示 "Stuff",它添加了一堆我在做的时候不太理解的空东西alert(node.nodeValue + "= "+ node.nodeType);。它说 null = 3 几次。谁能告诉我为什么这不能正常工作?提前致谢。

最佳答案

如果您想要文档中的文本,您可能需要查看递归调用。但是,如果您不关心 child ,请删除第一个 if (node.hasChildNodes()){}条件如下:

function extractText(node){
var txt = '';
// recursive exploration and option to uncomment the check for a <script>
// <script>s will have children as the the actual portion being executed
// is considered a text node (nodeType===3)
if (node.hasChildNodes()/* && node.nodeName !== 'SCRIPT'*/){
for (var c = 0; c < node.childNodes.length; c++){
txt += extractText(node.childNodes[c]);
}
}else if(node.nodeType===3){
txt += node.textContent;
}
return txt;
}
alert(extractText(document.body));

此外,您可能想获取 textContent nodeValue但那是你的电话。您还可以更细化并测试 nodeName 是否是 SCRIPT并忽略 if(如果你这样选择)但我会让你做出决定。

跟进:这是一个你可以玩的 fiddle ,使用 <script>测试注释和可选的空格删除:http://jsfiddle.net/KZuk5/2/

关于Javascript 无法从 HTML 中提取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14057596/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com