通过javascript在html标签内添加额外的属性

时间:2012-08-29 14:29:52

标签: javascript html

假设我们有一组html标签,如

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

我正在尝试为每个标记分别为数组key='post'中的[post, get, search]添加额外属性。 是否可以使用javascript ??

来做到这一点

我还想知道如果输入是哈希而不是像

那样的数组
 {"post" : ["0","1"], "get": ["0","2"], "search": ["2","1"]} 

3 个答案:

答案 0 :(得分:1)

是的,可以这样使用element.setAttribute():

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

答案 1 :(得分: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];
});

问题的更新部分(使用对象“hash”而不是数组)不起作用,因为对象没有定义的排序。您可以获取标签,但它们不会以确定的顺序出现:。

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

请参阅MDN网站documentation for Object.keys,包括旧版浏览器的垫片。

答案 2 :(得分:0)

您正在寻找Set Attribute:

https://developer.mozilla.org/en-US/docs/DOM/element.setAttribute

var d = document.getElementById("slide1"); 
d.setAttribute("key", "post");