我试图编写一个将值作为填充输入的函数,请参阅此简化示例:
function createBlocks(container,padding) {}
我希望padding参数为任意值(em,px等)。所以,我需要能够提取值和单位。
我可以用以下内容提取值:
var paddingVal = parseFloat(padding);
但我无法弄清楚如何提取单位价值......
有什么想法吗?
答案 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)
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"}