2012-06-28 52 views
2

我想創建一個元素,然後在一個步驟中添加其他元素。Javascript createElement和appendchild在一個步驟中

var header = document.createElement("thead").appendChild(document.createElement("tr")); 

爲什麼此代碼只輸出TR而不是Thead?

當我使用此代碼,那麼它的正確(THEAD + TR在那裏)

var header = CH.createElement("thead"); 
    header.appendChild(CH.createElement("tr")); 
+2

無論如何,您擁有的正確代碼比某些「一步」單線怪物更具可讀性 – Esailija

+0

任何答案都可以解決您的問題嗎?如果是這樣,不要忘記勾選「已接受」複選標記。 ;) – canon

回答

3

因爲Node.appendChild()回報附屬兒童 ...

var appendedChild = element.appendChild(child); 

..你可以直接引用孩子的parentNode像這樣(sample fiddle):

var header = document.createElement("thead") 
    .appendChild(document.createElement("tr")) 
    .parentNode; // the row's parentNode, i.e.: thead 
+0

啊好吧,所以我想在jQuery中...一個函數返回這個(引用對象)... – freeza

1

@antisanity有一個很好的解決方案。如果你的變量是預先聲明的另一個解決方案是做到這一點...

(header = document.createElement('thead')) 
     .appendChild(document.createElement('tr')); 

這確保了分配給header.appendChild()之前發生。

+0

o.O –

+0

@Derek:什麼問題? – 2012-06-28 22:28:41