Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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_Arrays_Foreach - Fatal编程技术网

在javascript中添加动态样式

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

我想从head复制现有样式并将其添加到window.open弹出窗口。下面是我的代码

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