2012-06-01 45 views
5

我将从一点背景开始。javascript [object Object] to string

所以我想要做的是从元素中抓取“样式”属性,最终的计划是将其输出到文本框(样式是动态的)。有了这个,我创建了一些CSS前缀,因为我只是在计算样式。

就这样,我有一堆CSS属性的变量在这里看到:

compcss = { 
       'font-size': fsize, 
       'padding': tpadd, 

       '-webkit-border-radius': brad, 
       '-moz-border-radius': brad, 
       '-o-border-radius': brad, 
       '-ms-border-radius': brad, 
       'border-radius': brad, 

       'background': bground, 
       'background-m': bgmoz, 
       'background-o': bgop, 
       'background-i': bgie, 
       'color': 'white', 
       'text-shadow': '0 -1px 0 rgba(0, 0, 0, 0.25)', 
       'text-decoration': 'none', 
       'border': '1px solid rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25)', 

      }; 

通常FSIZE,tpadd,布拉德和bground充满

document.defaultView.getComputedStyle(cssStr[0], "")[style] 

但对于跟着jsbin我输入了静态数字。

在登录或放入文本框时(这是预期的),将以[object Object]的形式返回。不过,我希望得到这个对象输出为以下形式的字符串:

font-size: Xpx; 
padding: Ypx; 
-webkit-border-radius: Zpx; 

等等,我已经试过JSON.stringify(compcss),但返回为:

"font-fize":"Xpx","padding":"Ypx","-webkit-border-radius":"Zpx" 

一路下行。

什么是最好的方式来得到这个输出我想要的方式?如果需要澄清,请告诉我。有没有更好的方法来解决这个问题?

这里例如jsbin:http://jsbin.com/opiwuy/2/edit

两个香草的Javascript和JQuery的罚款。

谢谢!

+0

不要紧,如果在报价中把对象的属性或不?或者我们可以定义它们吗? – Sethen

+0

@SethenMaleno不需要在引用中包含任何属性,这将用于样式表中。我已经接受了一个解决方案,但感谢您的关注。 – MoDFoX

+0

@MoDoFox我真的在为我自己着想。我从来没有见过用引号在对象中列出的属性。 – Sethen

回答

5
var value = ''; 
    $.each(compcss, function(key, val) { 
    value += key + ' : ' + val + ';' +'\n'; 
    }); 
    $('#css').val(value); 

DEMO

你也可以做

$('#css').val(function() { 
    var value = ''; 
    $.each(compcss, function(key, val) { 
     value += key + ' : ' + val + ';' + '\n'; 
    }); 
    return value; 
}); 

DEMO

+0

我试图做类似的东西,但这打破了'颜色:“白色”作为'color:white'。+1为努力 –

+0

你忘了'''末尾 –

+0

@joy感谢buddy – thecodeparadox

2

这样的事情可能会满足您的需求:

function cssStringify(myObject) { 
    var result = ""; 
    var stringObjs = JSON.stringify(myObject).split(","); 
    $.each(stringObjs, function(val) { 
     var pair = val.split(":"); 
     result = result + pair[0] + ":" + pair[1] + ";\n"; 
    }); 
    return result; 
} 
2

仅仅抛出我的版本与.replace

var xx = JSON.stringify(compcss); 
$('#csjson').val(
    xx.replace(/":"|":/g, ":") 
     .replace(/,"/g, "\n") 
     .replace(/"/g, "")); 

DEMO:http://jsbin.com/opiwuy/4