Javascript:为元素添加/减去'top'属性?

时间:2012-01-15 06:07:25

标签: javascript jquery

我正在尝试从页面上的元素添加一些像素。这样我就可以创建一个新元素并将其放在它上面。

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

但它返回“50px20”,我还没有尝试减去它,但是我应该怎么做以防止它返回'px'呢?

有没有办法在jQuery中执行此操作?

谢谢, 亚历克斯。

5 个答案:

答案 0 :(得分:3)

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

要在jQuery中获取top CSS值,您可以使用

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

要获取元素的位置,请使用jQuery的offset()position()方法。你可能想要偏移。

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

要修复pxem尝试parseInt的返回值。

parseInt(value);

答案 1 :(得分:2)

JavaScript的+运算符执行字符串的连接以及添加Numbers。这可能非常令人困惑,但是一旦你知道,使用parseInt

很容易解决
var posy = parseInt(document.getElementById('user').style.top, 10) + 20;

另一个怪癖:parseInt(number)并不总是按预期工作。如果number是一个数字的字符串,则以前导零开头(如0123),parseInt将假定它在基数为8。

要确保其按预期工作,请使用radixparseInt(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;

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

答案 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;