如何在一个变量中获取body标签的所有class和style属性

时间:2011-09-13 07:54:55

标签: javascript jquery attributes

我有以下

<body class="test test1 test2" style="color:red; font-size:12px">...</body>

使用jQuery,我如何在变量x中存储body标签的所有属性。所以换句话说我想要

var x = 'class="test test1 test2" style="color:red; font-size:12px"';

3 个答案:

答案 0 :(得分:4)

您可以使用element.attributes
类似的东西:

var body = document.body,  
    attries = body.attributes,
    arr     = [];
for(var i=0, len=attries.length; i<len; i++){
    var attr = attries[i];
    arr.push(attr.nodeName + '="' + attr.nodeValue + '"');
}
var x = arr.join(" ");
alert(x);

请在此处查看:http://jsbin.com/ihiwod

更新:

但是,在IE(&lt; = 7)中,上面的代码会生成比您想要的更多的属性,因为未设置的属性也会添加到这些浏览器中的element.attributes

改进的代码是:

var body = document.body,  
    attries = body.attributes,
    arr     = [];
for(var i=0, len=attries.length; i<len; i++){
    var attr = attries[i];
    if(attr.specified){  
        var attr_name = attr.nodeName,  
            attr_val  = attr_name === "style" ? body.style.cssText  
                                              : attr.nodeValue;
        arr.push(attr_name  + '="' + attr_val   + '"');
    }
}
var x = arr.join(" ");
alert(x);

答案 1 :(得分:3)

var attrs = document.body.attributes;
var attributes = [];
for(var i=0; i<attrs.length; i++) {
    attributes.push(attrs[i].nodeName + '="' + attrs[i].nodeValue + '"');
}
var x = attributes.join(" ")

答案 2 :(得分:0)

据我所知,jQuery本身无法做到这一点,但有一个插件可供使用:http://plugins.jquery.com/project/getAttributes。你可能想检查一下。