2016-06-10 92 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