2011-08-11 86 views
2
<div id="nav"> 
    <ul id="linkselect"> 
     <li class="important" ><a href="home.html">Home</a></li> 
     <li><a href="rlsdoc.html" >Release Document</a></li> 
     <li><a href="dtadmp.html">Data Dump</a></li> 
     <li><a href="facsetup.html">Facility Setup</a></li> 
     <li><a href="dbuelem.html">DBU Elimination</a></li> 
     <li><a href="contact.html">Contact us</a></li> 
    </ul> 
</div> 

我想將div「nav」的所有鏈接(主頁,發佈文檔等)放入數組中,以便我可以反覆使用它們。請幫助我爲此編寫JavaScript代碼。提前致謝。訪問div元素的問題

+0

當你問一個問題時你會更加確切:你需要文本還是「a」節點的鏈接?或者你想要節點? –

回答

0

這應該做你需要使用純JavaScript什麼:

window.onload = function() { 
    var data = []; 
    var oDiv = document.getElementById("nav"); 
    var links = oDiv.getElementsByTagName("a"); 
    for (var i = 0; i < links.length; i++) 
     data.push(links[i].innerHTML); 
    alert(data.join("\n")); 
}; 

Live test case

-1

的jQuery:

$('#linkselect li a') 

普通的JavaScript:

document.getElementById('linkselect').getElementsByTagName("a") 
+0

它不會選擇所有「a」節點,而是「li」節點 –

+0

-1 - 鏈接,而不是lis –

0

我們可以使用一個組合的.querySelectorAll()查詢所需的錨和Array.prototype.forEach遍歷這些靜態元素的引用。

var anchors = document.querySelectorAll('#linkselect a'), 
    each = [].forEach; 

each.call(anchors, function(a) { 
    console.log(a); 
}); 

提示:這兩種方法都沒有「old'ish」瀏覽器可用,但很容易建立,很多墊片可用。

+0

這不會在某些瀏覽器中運行,不是嗎? –

+0

@Jerome IE7及以下版本不支持數組的'forEach',yep。 –

3
document.getElementById("nav").getElementsByTagName("a") 

這將返回一個包含所有「一」節點

0

試試這個節點列表。

的Javascript

var items = []; 
var anchors = document.getElementById("nav").getElementsByTagName("a"); 
for(var i = 0; i<anchors.length; i++){ 
    items.push(this.href); 
} 

jQuery的

var items = []; 
$("#nav a").each(function(){ 
    items.push(this.href); 
}); 
+0

這裏不需要jQuery。 –

+0

@暗影精靈:是的。沒有正確閱讀。我的壞:) [但jquery是驚人的,並做所有美好的事情](http://www.doxdesk.com/img/updates/20091116-so-large.gif) – naveen

+2

大聲笑@ [鏈接後] - 不錯的一個!無論如何,雖然我同意jQuery是好的和偉大的,它不是上帝的命令..有時,好的舊普通JavaScript將更好地使用。 :) –