2012-06-01 152 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