2012-01-15 60 views
1

我想从我的页面上的元素添加一些像素。这样我就可以创建一个新的元素并将其放在它上面。Javascript:将“顶部”属性添加/减去元素?

posy = document.getElementById('user').style.top + 20; 

但它返回“50px20”,我还没有尝试减去它,但是我应该做的,以防止其在它返回“PX”是什么?

有没有办法在jQuery中做到这一点?

谢谢, Alex。

回答

3

你问的是有点混乱。你说你想要top属性,但这可能是页面元素的位置或其样式的最高值。有一个明显的区别。这听起来像你想要的元素的位置,因为你在posy存储结果。这与获取CSS的最高值不同,它只会在样式表中定义的情况下才存在。

要获得的jQuery的top CSS值你可以使用

$('selector').css('top'); 

获取该元素的位置使用jQuery的offset()position()方法。你可能会想要抵消。

$('selector').offset().top; //or .left 

要解决您的返回值pxem尝试parseInt函数。

parseInt(value); 
+0

谢谢“队友!对不起解释不够,但它工作完美! – Alex 2012-01-15 06:34:45

0
posy = parseInt($('#user').css('top').replace('px', ''), 10) + 20; 
2

JavaScript的+操作员执行字符串的链接以及添加数字。这可以是相当混乱,但一旦你知道,这很容易使用parseInt解决:

var posy = parseInt(document.getElementById('user').style.top, 10) + 20; 

另外一个怪癖:parseInt(number)并不总是正常工作。如果number是一个数字开始的字符串开头的前导零(如0123),parseInt函数将假设它是在基地8

,以确保它正常工作,使用radixparseInt(number, 10);

PS: mrtsherman对你的潜在意图有好处。虽然我与他的建议使用jQuery的同意,这可以用普通的JavaScript以及:

function findOffsetTop(element) { 
    var offset = 0; 
    do { 
     offset += element.offsetTop; 
    } while (element = element.offsetParent); 
    return offset; 
} 

var user = document.getElementById('user'); 
var posy = findOffsetTop(user) + 20; 

(基于http://www.quirksmode.org/js/findpos.html

+0

这也帮助我很好。谢谢 – Alex 2012-01-15 06:34:56

0

普通的JavaScript方法:

posy = document.getElementById('user').style.top.replace('px','') + 20;

jQuery方法:

posy = $('user').css('top').replace('px','')+20;

0

试试这个:

posy = parseInt(document.getElementById('user').style.top) + 20;