我正在尝试从页面上的元素添加一些像素。这样我就可以创建一个新元素并将其放在它上面。
posy = document.getElementById('user').style.top + 20;
但它返回“50px20”,我还没有尝试减去它,但是我应该怎么做以防止它返回'px'呢?
有没有办法在jQuery中执行此操作?
谢谢, 亚历克斯。
答案 0 :(得分:3)
你问的是有点混乱。您说您想要top
属性,但这可能是页面上元素的位置或其样式的最高值。有一个明显的区别。听起来你想要元素的位置,因为你将结果存储在posy
中。这与获取CSS的最高值不同,只有在样式表中定义了CSS才会存在。
要在jQuery中获取top
CSS值,您可以使用
$('selector').css('top');
要获取元素的位置,请使用jQuery的offset()
或position()
方法。你可能想要偏移。
$('selector').offset().top; //or .left
要修复px
或em
尝试parseInt的返回值。
parseInt(value);
答案 1 :(得分:2)
JavaScript的+
运算符执行字符串的连接以及添加Numbers。这可能非常令人困惑,但是一旦你知道,使用parseInt
:
var posy = parseInt(document.getElementById('user').style.top, 10) + 20;
另一个怪癖:parseInt(number)
并不总是按预期工作。如果number
是一个数字的字符串,则以前导零开头(如0123
),parseInt将假定它在基数为8。
要确保其按预期工作,请使用radix
:parseInt(number, 10);
P.S。: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;
答案 2 :(得分:0)
posy = parseInt($('#user').css('top').replace('px', ''), 10) + 20;
答案 3 :(得分:0)
普通的Javascript方法:
posy = document.getElementById('user').style.top.replace('px','') + 20;
jQuery方法:
posy = $('user').css('top').replace('px','')+20;
答案 4 :(得分:0)
试试这个:
posy = parseInt(document.getElementById('user').style.top) + 20;