2016-06-10 71 views
1

集的innerHTML我想设置styleinnerHTML,但Object.defineProperty覆盖本地setter和它成为常用的属性。 我知道我应该将它分解为元素创建和属性赋值,但是我对没有临时变量(甚至在匿名块)中这样做感兴趣。匿名对象

的javascript:

document.body.appendChild(
Object.defineProperty(document.createElement('style'), 
         'innerHTML', 
         { value:'div{color:gainsboro;}' } 
        ) 
) 

附:这不是生产代码,这个问题只是为了好奇。

+0

通过想avoir临时变种您要添加更多的复杂性,我不知道这是一个很好的事情,也因为你通过你的对象因为参数是建立一个临时的变种,在函数内部这样你就不会得到什么 – user3

+2

如果你只是想插入式的标签,你可以只是做:'document.head.insertAdjacentHTML(“”)',没有需要创建元素,临时变量或尝试操作属性 –

回答

3

我想你想Object.assign(ES 6):

var styleElement = Object.assign(
    document.createElement('style'), 
    {innerHTML: 'div{color:gainsboro;}'} 
); 
0

你可以只追加属性是这样的:

<html> 
<body id="bdy"> 
<script> 

document.getElementById("bdy").appendChild(document.createElement('style')); 

document.getElementById("bdy").lastChild.innerHTML = 'div{color:gainsboro;}' 
</script> 


<div> 
This is a div. 
</div> 
</body> 
</html> 

两个方法调用,但没有临时变量。

+0

您可以使用'document.body'来引用html文档的'body'。 – OwnageIsMagic