我想从我的页面上的元素添加一些像素。这样我就可以创建一个新的元素并将其放在它上面。Javascript:将“顶部”属性添加/减去元素?
posy = document.getElementById('user').style.top + 20;
但它返回“50px20”,我还没有尝试减去它,但是我应该做的,以防止其在它返回“PX”是什么?
有没有办法在jQuery中做到这一点?
谢谢, Alex。
我想从我的页面上的元素添加一些像素。这样我就可以创建一个新的元素并将其放在它上面。Javascript:将“顶部”属性添加/减去元素?
posy = document.getElementById('user').style.top + 20;
但它返回“50px20”,我还没有尝试减去它,但是我应该做的,以防止其在它返回“PX”是什么?
有没有办法在jQuery中做到这一点?
谢谢, Alex。
你问的是有点混乱。你说你想要top
属性,但这可能是页面元素的位置或其样式的最高值。有一个明显的区别。这听起来像你想要的元素的位置,因为你在posy
存储结果。这与获取CSS的最高值不同,它只会在样式表中定义的情况下才存在。
要获得的jQuery的top
CSS值你可以使用
$('selector').css('top');
获取该元素的位置使用jQuery的offset()
或position()
方法。你可能会想要抵消。
$('selector').offset().top; //or .left
要解决您的返回值px
或em
尝试parseInt函数。
parseInt(value);
posy = parseInt($('#user').css('top').replace('px', ''), 10) + 20;
JavaScript的+
操作员执行字符串的链接以及添加数字。这可以是相当混乱,但一旦你知道,这很容易使用parseInt
解决:
var posy = parseInt(document.getElementById('user').style.top, 10) + 20;
另外一个怪癖:parseInt(number)
并不总是正常工作。如果number
是一个数字开始的字符串开头的前导零(如0123
),parseInt函数将假设它是在基地8
,以确保它正常工作,使用radix
:parseInt(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;
这也帮助我很好。谢谢 – Alex 2012-01-15 06:34:56
普通的JavaScript方法:
posy = document.getElementById('user').style.top.replace('px','') + 20;
jQuery方法:
posy = $('user').css('top').replace('px','')+20;
试试这个:
posy = parseInt(document.getElementById('user').style.top) + 20;
谢谢“队友!对不起解释不够,但它工作完美! – Alex 2012-01-15 06:34:45