2012-02-16 2 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- via-a-set-of-elements-in-javascript) –

ответ

3

Pure 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 л Информация

Отъезд document.getElementById и element.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 возвращает элемент с идентификатором соответствия в документе.

document.getElementsByTagName возвращает элемент с соответствующим тегом внутри документа. Но если вы вызовете getElementsByTagName на уже выбранном элементе, как показано выше, он будет выглядеть внутри этого элемента.

+0

@max - Это работало для вас? – ShankarSangoli

+0

похоже, что вы отменили мое редактирование. 'getElementsByTagName {" a ");' должно быть 'getElementsByTagName (" a ");' –

+0

О, это была опечатка! – ShankarSangoli

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'; 
}