使用javascript从文本中获取DOM主体
我在使用getElementsByTagName从javascript代码中提取主体时遇到问题使用javascript从文本中获取DOM主体,javascript,html,getelementsbytagname,Javascript,Html,Getelementsbytagname,我在使用getElementsByTagName从javascript代码中提取主体时遇到问题 var enc1='test'; var wrapper=document.createElement('div'); wrapper.innerHTML=enc1; var converted=wrapper.getElementsByTagName(“主体”); var res=“正文:”+已转换; document.getElementById(“demo”).innerHTML=res 就像
var enc1='test';
var wrapper=document.createElement('div');
wrapper.innerHTML=enc1;
var converted=wrapper.getElementsByTagName(“主体”);
var res=“正文:”+已转换;
document.getElementById(“demo”).innerHTML=res代码>
就像罗布在他的评论中说的那样,你不能在一个div中有一个head或body标签
大多数(如果不是全部的话)浏览器只会向包装器div写入“test”
您已使用代码创建了以下内容:
<div>test</div>
包装器div中没有body标记,因此转换后的是空的HTMLCollection[]。
和
比每天的
有点特殊。只能将它们作为
的直接后代放置
使用createElement
创建一个像这样的html
标记目前是不可能的,您需要创建一个新的文档
,然后使用它访问它的.body
属性-.body.innerHTML
,以获取html
目前解析整个HTML文档的唯一方法是document.implementation.createHTMLDocument
和DOMParser
DOMParser
更新鲜,所以我建议使用它
const enc1='test';
const newDocument=(new DOMParser).parseFromString(enc1,'text/html');
const converted=newDocument.body.innerHTML;
const res=“正文:”+已转换;
document.getElementById(“demo”).innerHTML=res代码>
标记不应位于div中。您可以这样做来提取正文中的文本:
const bodyText=document.body.innerHTML
在div中,或元素都无效。它们必须是元素的子元素。var wrapper=document.createElement('html');/*…*/document.getElementById(“demo”).innerHTML=已转换[0]。innerHTML你到底想做什么?例如,如果您实际上只想获取文本,则应该能够执行wrapper.textContent
…否则会导致未定义的行为。这没有什么不确定的。HTML5对于如何处理解析错误非常具体。
var converted = wrapper.getElementsByTagName("body");