2012-02-16 129 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'; 
}