2012-08-29 26 views
0

添加HTML標籤內的額外屬性,假設我們有像通過JavaScript

<div id="slide1" class="slide"></div> 
<div id="slide2" class="slide"></div> 
<div id="slide3" class="slide"></div> 

我試圖到div標籤一樣key='post'從陣列[post, get, search]添加額外的屬性,每個標籤的一組HTML標籤分別。 是否有可能使用JavaScript?

我也想KNW如果什麼輸入是哈希,而不是像數組

{"post" : ["0","1"], "get": ["0","2"], "search": ["2","1"]} 

回答

1

是的,它是可能的,只是使用element.setAttribute()這樣的:

var element = document.getElementById("slide1"); 
element.setAttribute('key','post'); 
+0

我不是,我第一次回答我的問題,然後決定讓我的例子適應OP的代碼。不是奇蹟,我最終得到幾乎相同的代碼。 – Asciiom

1
var attrs = ['post', 'get', 'search']; 
for (var i = 0, n = attrs.length; i < n; ++i) { 
    var el = document.getElementById('slide' + (i + 1)); 
    el.setAttribute('key', attrs[i]); 
} 

或者,如果正在使用jQuery(並假設只有這三個要素具有slide類):

var attrs = ['post', 'get', 'search']; 
$('.slide').attr('key', function(i) { 
    return attrs[i]; 
}); 

問題的更新的部分(使用對象「散列」,而不是一個數組)不會工作,因爲一個對象沒有定義的順序。你可以獲得標籤,但他們不會以確定性的順序出現:。

var myobj = {"post" : ["0","1"], "get": ["0","2"], "search": ["2","1"]}; 
var attrs = Object.keys(myobj); 
... // as above 

查看MDN網站documentation for Object.keys,包括舊版瀏覽器的墊片。

+0

如果輸入是散列而不是像{「post」:[「0」,「1」],「get」:[「0」,「2」],「search」:[「2」,「 1「]} –

+0

和是的,我有jquery –

+0

@SamDaSilva你希望HTML輸出看起來像散列示例中的樣子?附:如果確實如此,你應該更新你的問題,因爲答案看起來很不一樣。 – Alnitak