jquery 是否添加javascript像素值?

kjthegm6  于 12个月前  发布在  jQuery
关注(0)|答案(6)|浏览(101)

在javascript/jQuery中有没有一种方法可以将两个值为“60 px”和“40 px”的变量相加得到“100 px”?
或者从更一般的意义上说,我试图计算对象相对于其他对象的位置,如果我可以这样做,那将非常方便:

$('#object2').css('left', $('#object1').css('left')+'60px');

当然,这只是给出了无效的“40 px 60 px”。

e37o9pze

e37o9pze1#

从字符串中删除px,添加值,然后再添加px

(parseInt("40px".replace(/px/,""))+60)+"px"
8nuwlpux

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()做的事情相同,但适用于小数(也称为浮点值)。

6ie5vjzr

6ie5vjzr3#

可能最有效的方法是

parseInt("40px", 10) + parseInt("60px", 10) + "px"

parseInt调用中的10是必要的,以防止错误地以基数10以外的方式计算值。

7fhtutme

7fhtutme4#

var shiftedRight = (parseFloat($('#object1').css('left')) + 60) + 'px';
$('#object2').css('left', shiftedRight);

parseFloat将只解析字符串的数字前缀。

pjngdqdw

pjngdqdw5#

您可以通过解析对象的css.left值来实现这一点,有点像这样:

$('#object2').css('left', (parseInt($('#object1').css('left')) + 60) + 'px');

但是你应该记住,css.left的值可能不是px,而是%em等等。所以干净的方法是使用jQuery offset method,因为这会给予你正确的像素值。

$('#object2').css('left', ($('#object1').offset().left + 60) + 'px');
k4emjkb1

k4emjkb16#

它在Firefox中还不起作用,但你可以使用Typed OM。
将一个HTML元素left设置为另一个元素left + 60px的值:

const object1 = document.getElementById('object1');
const object2 = document.getElementById('object2');

object2.attributeStyleMap.set('left', CSS.px(object1.computedStyleMap().get('left').value + 60));

相关问题