2015-03-11 4 views
0

Обновлено Код я придумал это:TypeScript или JS- Как выбрать элемент и все его дочерние элементы в HTMLCollection?

<section id="Test"> 
    <header>Welcome</header> 
    <p>This is a test</p> 
    <div>Nothing here</div> 
</section> 

var element = document.getElementById("Test"); 
var elements = <HTMLCollection>element.getElementsByTagName("*"); 

Я хочу, чтобы коллекция включает <section>, <header>, <p> и <div> приведенный выше код имеет только <header>, <p> и <div>. Есть ли в любом случае я могу добавить <section> в коллекцию?

Проблема в том, что я хочу включить элемент в коллекцию элементов. Я знаю, что могу использовать externalHTML и поместить его в контейнер temp, а затем получить из него весь элемент, но я ищу более чистый способ.

+0

* "включают в себя сам элемент" * - не уверен, что я получаю то, что вы спрашиваете ... – tymeJV

+0

Вам нужно будет указать дополнительную информацию и некоторый код HTML, если вы хотите, чтобы мы поняли, что вы пытаетесь сделать. – dave

+0

Узел, который вы получаете из 'getElementById()', сохранит его 'childNodes' /' children'; так что ... Просто получить один узел и получить доступ к своим детям, когда вам нужно? –

ответ

2

Вы можете использовать список с разделителями-запятыми: querySelectorAll, где первым элементом является сам элемент.

Это Отрывок использует ваш HTML, чтобы получить раздел Test и его детей: header, p и div:

var elements= document.querySelectorAll('#Test, #Test *'); 
 
console.log(elements.length); //4
<section id="Test"> 
 
    <header>Welcome</header> 
 
    <p>This is a test</p> 
 
    <div>Nothing here</div> 
 
</section>

+0

Спасибо! Это то, что я ищу, но я хочу, чтобы он был немного более универсальным. Таким образом, он может работать с любым тегом динамически. В этом случае вы знаете, что это тег UL. Давайте сделаем вид, что не знаем, какой тег является элементом. другими словами, в функции, в которой передается элемент, как я могу получить сам элемент и его дочерние элементы в коллекцию html. – DonO

+0

Я обновил свой ответ. Чтобы использовать 'querySelectorAll' с идентификатором, добавьте знак фунта в идентификатор. –