我發現通過用正則表達式解析它們來轉換CSS中的值的代碼。它適用於整個值,但是當我嘗試轉換小數值(如10.15px
)時,它會忽略小數點右邊的數字,並給我這樣的10.6.613756613756614mm
。使用整數或小數值將px轉換爲mm
這裏是我的代碼:
searchPX = new RegExp('(\\d+)px', 'g');
searchPXDec = new RegExp('(\d+\.\d+)px', 'g');
$('button').on('click', function() {
var css = $('textarea').val();
var css2 = $('textarea').val();
var result;
var result2;
if ((result = searchPX.exec(css)) !== null) {
var px = parseInt(result[1]);
var mm = px/3.78;
css = css.replace(px + 'px', mm + 'mm');
$('textarea').val(css);
}
else if((result = searchPX.exec(css)) == null) {
result2 = searchPXDec.exec(css2);
if(result2 !== null) {
var pxdec = parseFloat(result2[1]);
var mmdec = pxdec/3.78;
css2 = css2.replace(px + 'px', mm + 'mm');
$('textarea').val(css2);
}
}
});
我試圖以配合兩個正則表達式,然後用parseInt
對整個價值和parseFloat
分數值,但是它不工作。
下面是代碼真人版:http://jsfiddle.net/trtcN/575/
那你爲什麼不只是使用一個REG EXP?或反向檢查.... – epascarello
我剛剛試過這個'searchPX = new RegExp('(\\ d +(\。\ d +)?)px','g');'並且它給了我相同的結果。 –
你確定3.78 px = 1mm?我希望不同的設備有不同的值。 – Arjan