在javascript中添加动态样式
我想从head复制现有样式并将其添加到window.open弹出窗口。下面是我的代码在javascript中添加动态样式,javascript,arrays,foreach,Javascript,Arrays,Foreach,我想从head复制现有样式并将其添加到window.open弹出窗口。下面是我的代码 const styleElements = document.getElementsByTagName('style'); let printContents ='<html><head>'; forEach(styleElements, style => { printContents += style; console.log(printContents);
const styleElements = document.getElementsByTagName('style');
let printContents ='<html><head>';
forEach(styleElements, style => {
printContents += style;
console.log(printContents);
});
答案更新: 要将样式复制到通过
窗口打开的新窗口中,请打开您可以尝试将仅存在的样式对象复制到新窗口的文档中:
var newWindow = window.open();
var newHead = newWindow.document.getElementsByTagName('head')[0];
var styles = document.getElementsByTagName('style');
Array.prototype.forEach.call(styles, function(style) {
newHead.appendChild(style);
});
您可以查看一个工作示例:如下更新代码
forEach(styleElements, style => {
printContents += style.textContent;
console.log(printContents);
});
元素DOM接口的outerHTML属性获取描述元素(包括其子元素)的序列化HTML片段。还可以将其设置为使用从给定字符串解析的节点替换元素
您正在尝试将字符串与对象连接起来。
尝试以下方法:
constyleelements=document.getElementsByTagName('style');
让printContents='';
[…样式元素].forEach(样式=>{
printContents+=style.outerHTML;
控制台日志(打印内容);
});代码>
.test{margin:10px;}
试试这个
constyleelements=document.getElementsByTagName('style');
让printContents='';
Array.prototype.forEach.call(styleElements,style=>{
printContents+=style.innerText;
});
控制台日志(打印内容)代码>
.test{背景色:红色;}
.test2{背景色:绿色;}
直接显示在页面中的所有css内容是否包括标记名?@user7789076因此,您是否希望将所有样式应用到使用窗口打开的窗口中,而不是仅显示所有样式。打开
?因此,您需要创建新的样式节点,并使用样式内容填充它们直接显示在页面样式中的所有css内容是代码中的一个对象。尝试使用JSON.stringify(样式)并检查它返回的内容。这是一个很好的建议,因为OP希望他的脚本能够以这种方式工作。
forEach(styleElements, style => {
printContents += style.textContent;
console.log(printContents);
});