2012-03-17 90 views
0

如何從一組元素中創建一個具有相同rel的數組?Javascript/jquery從具有相同rel的元素創建數組?

如:

<a rel='array' id='2' url='aa'></a> 
<a rel='array' id='5' url='bb'></a> 
<a rel='array' id='8' url='cc'></a> 

陣:

[2] > aa 
[5] > bb 
[8] > cc 

我把每個URL作爲價值只是使用的東西。但是訂購ID應該足夠了。

這怎麼辦?

+0

你使用jQuery或類似的東西? – Niko 2012-03-17 21:45:28

回答

1
var anchors = document.getElementsByTagName('a'), i = 0, arr = [], current; 

for(i; i < anchors.length; i++){ 
    current = anchors[i]; 

    if(current.getAttribute('rel') == 'array') { 
     // arr.push(current.getAttribute('url')); 
     arr.push({ 'id' : current.id, 'url' : current.getAttribute('url') }); 
    } 
} 

http://jsfiddle.net/8ScSH/

1

沒有足夠的jQuery!

var arr = []; 
$('a[rel="array"]').each(function(){ 
    arr.push($(this).attr('url')); 
}); 
0

很容易,如果你正在使用jQuery:

var arr = []; 
$('a[rel="array"]').each(function() { 
    arr.push($(this).attr('url')); 
}); 


Fiddle

0
var itemArray = []; 
$("a[rel='array']").each(function() { itemArray.push($(this).attr("url") }); 
0

嘗試

var a = {}; 

$('#wrap a').each(function() { 
    if($(this).attr('rel') === "array") { 
     a[$(this).attr('id')] = $(this).attr('url'); 
    } 
});​​ 

一個數組不會削減它,你需要一個對象。住在這裏:http://jsfiddle.net/martincanaval/rAPkL/

+0

同樣的想法適用於不使用Jquery:http://jsfiddle.net/martincanaval/3GAYN/1/ – 2012-03-17 22:14:39

0
var elements = []; 
$('a[rel="array"]').each(function() { 
    elements[this.id] = $(this).attr('url'); 
}); 

請注意,這將創建一個稀疏陣列僅由元素ID,這沒有多大意義,我指定的索引值,但是這就是你問什麼。它真的沒有意義,如果任何ID可以是非數字 - 如果是這樣,你應該使用一個對象,而不是一個數組,即:

var elements = {}; 

「我把每個URL作爲值只是去使用一些東西,但是有了這些ID就足夠了。「

如果你的目的是要獲得一個ID數組,那麼你可以這樣做:

var elementIds = []; 
$('a[rel="array"]').each(function() { 
    elementIds.push(this.id); 
}); 

這將創建數組['2', '5', '8']其中標識的順序,它們出現在HTML源中。

但是,只是說$('a[rel="array"]')爲您提供了一個jQuery對象,它是一個類似於數組的結構,它包含所有匹配的元素 - 這就是爲什麼我們可以使用.each()方法遍歷每個元素。所以有可能你真正想做的事情可以直接用jQuery來完成,而不是設置你自己的數組。

相關問題