width属性的值类型是字符串,比如 ‘12px’, ‘12rem’,因此可以利用字符串的split方法。
split方法不会改变原字符串的值(即不会改变width的值),它返回一个新的结果,类型为数组(return Array)
因此可以这么写:
// 假如单位为px
let width = '120px';
let arr = (width.split("px"))
// arr = ['120', 'px']
// 纯数字的字符串,可以直接用Number方法或者其他方法,比较方便的写法是隐式转换
// 隐式转换
width = arr[0] - 0;
// 假如单位为rem
let width = '120rem';
let arr = (width.split("rem"))
// arr = ['120', 'rem']
width = arr[0] - 0;
// 假如单位不确定,在rem和px之前来回变化(数据源的问题)
let width = this.$refs.centerModal.style.width;
let arr = (width.split("px"))[0].split("rem");
// 如果width为120px,则arr = ['120']
// 如果width为120rem,则arr = ['120', '']
// 字符串转数字
width = arr[0] - 0;
像这样,如果存在多种单位的可能性,那么只需要在每次split之后取数组的第一项再进行下一种单位切割可以得到最后的字符串数字。