2012-11-27 35 views
0

我有一個div,並在其中一些項目的清單列表的最簡單方法:的Javascript:使元素

<div id="myDiv"> 
<ul> 
    <li><a>Item 1</a></li> 
    <li><a>Item 2</a></li> 
    <li><a>Item 3</a></li> 
</ul> 

我怎麼能輕易做出的Javascript數組的「a」元素知道物品的數量可能會改變?

+0

_「知道項目的數量可能會改變」 _ - 你的意思是要在陣列自動更新,如果錨元素被添加或刪除頁面加載後?或者僅僅是你事先不知道有多少? – nnnnnn

+0

該頁面可能會向此列表中添加更多元素 – Flynn

回答

3

如果你想有一個靜態列表:

var mylist = $('#myDiv > ul > li > a').toArray(); 

但是你寫「...知道數字o f項目可能會改變「。如果這意味着您需要更新DOM更改的「實時列表」,請執行以下操作:

var mylivelist = document.getElementById("myDiv") 
         .getElementsByTagName("a"); 

此列表將在添加或刪除項目時更新。它假定<div>中沒有其他<a>元素。如果有,你需要調整。

0

如果你使用jQuery那麼它的

$('#myDiv a') 

如果沒有jQuery的則只是這

document.getElementById('myDiv').getElementsByTagName('a') 
+0

儘管兩種方法都不返回數組。 –

+0

的確,jquery沒有,但是你可以在它的末尾粘貼.toArray()。 –

+0

第二個也不是,它是一個'DOMNodeList'。 –

0

在普通的舊的JavaScript(無jQuery的需要):

var myDiv = document.getElementById('myDiv'); 
    var allAnchors = myDiv.getElementsByTagName('a'); 
    for (var i = 0; i < allAnchors.length; i++) { 
     //do something with each allAnchors[i] node 
     document.write(allAnchors[i].innerHTML + '<br />'); 
    }