2012-02-16 126 views
1

我想循環一些鏈接並在href中添加一個數字,所以它會像x.php&ref=333一樣。將代碼從jquery轉換爲純javascript

<div id="maindiv"> 
<span><a href="x.php&ref="></a></span> 
<span><a href="x.php&ref="></a></span> 
<span><a href="x.php&ref="></a></span> 
</div> 

如何在純JavaScript中編寫此代碼?這裏是jQuery代碼:

$('#maindiv a').each(function(){ 
var hr = $(this).attr('href'); 
$(this).attr('href' , hr+333); 
}) 

由於某種原因,我不能使用它,需要編寫純JavaScript代碼。 具體來說,我不知道如何獲得每個a元素。

+0

可能重複[什麼是通過一組在JavaScript元素的循環最好的方法是什麼?(http://stackoverflow.com/questions/157260/whats-the-best-way-to-loop-通過JavaScript中的元素集) – 2012-02-16 18:47:57

回答

3

純JS版本:

方案一

// Get div element. jQuery equivalent: $('#maindiv') 
var mainDiv = document.getElementById("maindiv"); 

// Get all anchors in element. jQuery equivalent: $('#maindiv a') (or many others) 
var myAnchors = mainDiv.getElementsByTagName("a"); 

// Loop through each anchor element and update href 
for (var i = 0; i < myAnchors.length; i++) { 
    myAnchors[i].href = myAnchors[i].href + "YourString"; 
}​ 

方案二(點點的可讀性)

// Get div element and corresponding anchors. jQuery equivalent: $('#maindiv a') 
var myAnchors = document.getElementById("maindiv").getElementsByTagName("a"); 

// Loop through each anchor element and update href 
for (var i = 0; i < myAnchors.length; i++) { 
    myAnchors[i].href = myAnchors[i].href + "YourString"; 
}​ 

Additiona l信息

退房document.getElementByIdelement.getElementsByTagName ON MDN。

1

試試這個。

var anchors = document.getElementById("maindiv").getElementsByTagName("a"); 
for(var i = 0; i < anchors.length;i++){ 
    anchors[i].href = anchors[i].href + "333"; 
} 

document.getElementById返回與文檔內匹配的ID的元素。

document.getElementsByTagName返回文檔中具有匹配標籤的元素。但是,如果您在上面已選擇的元素上調用getElementsByTagName,則它將查看該元素。

+0

@max - 這是否適合你? – ShankarSangoli 2012-02-16 18:57:25

+0

它似乎已經回滾我的編輯。 'getElementsByTagName {「a」);'應該是'getElementsByTagName(「a」);' – 2012-02-16 19:04:07

+0

哦,這是一個錯字謝謝! – ShankarSangoli 2012-02-16 19:06:32

1
var els = document.querySelectorAll('#maindiv a'); 
for (var i = 0; i < els.length; i++) { 
    var hr = els[i].href; 
    els[i].href = hr + 333; 
} 
1

這應該是最乾淨的方法。的

var links = document.getElementById('maindiv').getElementsByTagName('a'); 
for (i in links) { 
    links[i].href = links[i].href + '333'; 
}