在javascript中,如何从像素值(例如2em或20px)获取单位(例如em或px)?

时间:2015-12-10 13:01:32

标签: javascript jquery html

我试图编写一个将值作为填充输入的函数,请参阅此简化示例:

function createBlocks(container,padding) {}

我希望padding参数为任意值(em,px等)。所以,我需要能够提取值和单位。

我可以用以下内容提取值: var paddingVal = parseFloat(padding);

但我无法弄清楚如何提取单位价值......

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

您可以使用.replace()

var paddingVal = parseFloat(padding);
var Newpadding = padding.replace(paddingVal , '');
alert(Newpadding);

更清楚..你可能需要先替换空格

var paddingWithoutSpaces = padding.replace(/\s/g, '+');
var paddingVal = parseFloat(padding);
var Newpadding = padding.replace(paddingVal , '');
alert(paddingVal);
alert(Newpadding);

答案 1 :(得分:1)

使用regular expression



function createBlocks(padding) {
    var matches = padding.match(/(\d+)(.+)/),
        value = parseFloat(matches[1]),
        unit = matches[2];

    console.log('value: %d, unit: %s', value, unit);
}

createBlocks('3px'); // value: 3, unit: px
createBlocks('12rem'); // value: 12, unit: rem
 




答案 2 :(得分:0)

这是一个适用于十进制值的版本:

var getUnitValue = function (valueStr) {
    var result = {};
    result.value = parseFloat(valueStr);
    result.unit = valueStr.substr(('' + result.value).length).trim();
    return result;
};

getUnitValue('80.2 px'); // --> {value: 80.2, unit: "px"}