2012-06-28 2 views
2

요소를 만들고 한 번에 다른 요소와 함께 추가하려고합니다.Javascript createElement 및 appendchild를 한 번에 수행

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

왜이 코드는 테드가 아닌 유일한 TR을 출력합니까?

내가이 코드를 사용하는 경우 다음 올바른 (THEAD의 + 그럴 필요가있다)

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에 대한 할당은 .appendChild() 전에 발생하는 것을 보장

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

...이 작업을 수행하는 것입니다.

+0

o.O –

+0

@Derek : 무엇이 문제인가? –