2012-06-28 2 views
2

Я хочу создать элемент, а затем добавить его с другими элементами за один шаг.Javascript createElement и appendchild за один шаг

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

Почему этот код выводит только TR, а не Thead?

Когда я использую этот код, то его правильный (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 = document.createElement('thead')) 
     .appendChild(document.createElement('tr')); 

Это гарантирует, что назначение header происходит перед .appendChild().

+0

o.O –

+0

@Derek: В чем проблема? –