在javascript/jQuery中有没有一种方法可以将两个值为“60 px”和“40 px”的变量相加得到“100 px”?或者从更一般的意义上说,我试图计算对象相对于其他对象的位置,如果我可以这样做,那将非常方便:
$('#object2').css('left', $('#object1').css('left')+'60px');
当然,这只是给出了无效的“40 px 60 px”。
e37o9pze1#
从字符串中删除px,添加值,然后再添加px
(parseInt("40px".replace(/px/,""))+60)+"px"
8nuwlpux2#
您正在查找parseInt()函数。
var left1 = "40px"; var left2 = "60px"; // Add the integer values of the left values together var leftTotal = parseInt( left1, 10 ) + parseInt( left2, 10 ) + "px";
同样值得研究的是parseFloat()方法。它与parseInt()做的事情相同,但适用于小数(也称为浮点值)。
6ie5vjzr3#
可能最有效的方法是
parseInt("40px", 10) + parseInt("60px", 10) + "px"
parseInt调用中的10是必要的,以防止错误地以基数10以外的方式计算值。
10
7fhtutme4#
var shiftedRight = (parseFloat($('#object1').css('left')) + 60) + 'px'; $('#object2').css('left', shiftedRight);
parseFloat将只解析字符串的数字前缀。
parseFloat
pjngdqdw5#
您可以通过解析对象的css.left值来实现这一点,有点像这样:
$('#object2').css('left', (parseInt($('#object1').css('left')) + 60) + 'px');
但是你应该记住,css.left的值可能不是px,而是%,em等等。所以干净的方法是使用jQuery offset method,因为这会给予你正确的像素值。
px
%
em
$('#object2').css('left', ($('#object1').offset().left + 60) + 'px');
k4emjkb16#
它在Firefox中还不起作用,但你可以使用Typed OM。将一个HTML元素left设置为另一个元素left + 60px的值:
left
const object1 = document.getElementById('object1'); const object2 = document.getElementById('object2'); object2.attributeStyleMap.set('left', CSS.px(object1.computedStyleMap().get('left').value + 60));
6条答案
按热度按时间e37o9pze1#
从字符串中删除px,添加值,然后再添加px
8nuwlpux2#
您正在查找parseInt()函数。
同样值得研究的是parseFloat()方法。它与parseInt()做的事情相同,但适用于小数(也称为浮点值)。
6ie5vjzr3#
可能最有效的方法是
parseInt调用中的
10
是必要的,以防止错误地以基数10以外的方式计算值。7fhtutme4#
parseFloat
将只解析字符串的数字前缀。pjngdqdw5#
您可以通过解析对象的css.left值来实现这一点,有点像这样:
但是你应该记住,css.left的值可能不是
px
,而是%
,em
等等。所以干净的方法是使用jQuery offset method,因为这会给予你正确的像素值。k4emjkb16#
它在Firefox中还不起作用,但你可以使用Typed OM。
将一个HTML元素
left
设置为另一个元素left
+ 60px的值: