Javascript DOMParser-get元素样式

Javascript DOMParser-get元素样式,javascript,html,parsing,domparser,Javascript,Html,Parsing,Domparser,我试图获取我用DOMParser解析的元素的样式属性。不过,2.console.log的结果是空的。知道为什么会这样吗 <div id='foobar'> <style> .xl496 { color:#336699; } </style> <table> <tr> <td class='xl496'>Test:</td> </tr>

我试图获取我用DOMParser解析的元素的样式属性。不过,2.console.log的结果是空的。知道为什么会这样吗

<div id='foobar'>
  <style>
  .xl496
    {
    color:#336699;
    }
  </style>

  <table>
   <tr>
    <td class='xl496'>Test:</td>
   </tr>
  </table>
</div>
是仅对窗口可用的方法。由于您的代码位于DOM解析器内部,因此它没有正确的上下文,因此在该调用中返回空字符串。所以,这里有一个方法可以绕过它。您可以获取有问题的元素,将其插入窗口,运行
getComputedStyle
,然后将其放回DOMParser(片段)

var clipboardData=document.getElementById(“foobar”).outerHTML;
var parser=新的DOMParser();
var doc=parser.parseFromString(剪贴板数据,“text/html”);
var col=文件查询选择器(“tr”);
var td=列查询选择器(“td”);
//td必须在窗口中,而不是片段中才能使用window.getComputedStyle
文件.正文.附件(td);
log(window.getComputedStyle(td.getPropertyValue(“color”));
//下一个应该是“”,因为它没有内联样式
console.log(td.style.color);
//将td插入到它所在的dom解析器中
上校插入前(td,上校第一个孩子)

.xl496{
颜色:#336699;
}
测试:

您必须使用DOMParser吗?是的。因为以后我打算从剪贴板中获取数据,比如e.clipboardData.getData('text/html');当然我可以做到。但我计划下一步添加剪贴板集成。因此,我将从e.clipboardata.getData('text/html')获取数据;
var data = document.getElementById("foobar");

var parser = new DOMParser();
var doc = parser.parseFromString(data.innerHTML, "text/html");
var cols = doc.getElementsByTagName("tr");
var col = cols[0];
var tds = col.getElementsByTagName("td");
var td = tds[0];

console.log(getComputedStyle(td).getPropertyValue("color"));
console.log(td.style.color);