2012-05-08 52 views
0

我有這個簡單的HTML:樹childNode的ChilNode在JavaScript

<div id="tree"> 
    <div class="roi"> 
     <ul> 
      <li>text1</li> 
      <li>text2</li> 
      <li>text3 
       <ul> 
        <li>insideText1<li> 
        <li>insideText2<li> 
       </ul> 
      </li> 
     </ul> 
    </div> 
</div> 

我想只有項目「文本2」和項目「insideText2」; 於是,我就這樣寫道:

var Tree=document.getElementById("tree").document.getElementsByTagName("UL"); 

但我不知道如何到達包含特定li:「文本2」和「insideText2」。 請幫忙。 謝謝。

+0

提供的鏈接來工作的jsfiddle在需要列表項和子列表是從節點列表,你需要它 –

回答

1

只有一個文檔對象,所以你幾乎沒有與var Tree=document.getElementById("tree").document.getElementsByTagName("UL");,只是下降的第二document

var Tree=document.getElementById("tree").getElementsByTagName('ul'); 

嘗試過了鍍鉻的控制檯上此頁

document.getElementById('question').getElementsByTagName('td'); 

像魅力一樣工作

更新

很簡單...的getElementsByTagName()方法返回一個節點列表(這是比任何舊的陣列)。以上代碼提供了具有'ul'標籤的元素中所有ul元素的列表。您可以遍歷列表中的所有ul標記,然後檢查包含無序列表或某個innerText/innerHTML的子項li。我會在一分鐘內爲你打個快速的例子。

檢查this jsfiddle爲一個工作示例。玩弄它,就像你想要的,讓我知道如果還是有一些不完全清楚你......歡呼聲

+0

是的,但這仍然不能幫助我,請閱讀我在問題中提出的問題。謝謝 – Roy

+0

我認爲你會錯過一些東西,但我期待的例子 然後我會讓你知道,如果它解決了我的問題 謝謝。 – Roy

+0

增加了這個例子,用粗糙的方法根據它們的innerHTML值選擇各種子元素,或者在樹中定位。據我所知,這就是你需要的,不是嗎? –

2

假設JQuery的

//text2 
alert($('div#tree ul > li:eq(1)').text()) 

//insideText2 
alert($('div#tree ul > li > ul li:eq(1)').text())​ 
+0

萃取我忘了提重要的事情, 的解決方案應該沒有jqury,只有j的純粹avascript! – Roy

+1

然後你不應該把問題的jQuery標籤! – rt2800

+0

你是對的,我錯過了那部分。 – Roy

1

如果你想獲得對「文本2」裏,然後使用:

document.getElementsByTagName('li')[1] 

和項目「insideText2」將是

document.getElementsByTagName('li')[2].getElementsByTagName('li')[1]