Javascript:向'添加/减去;顶部';元素属性?
我正在尝试从页面上的元素添加一些像素。这样我就可以创建一个新元素并将其放置在上面Javascript:向'添加/减去;顶部';元素属性?,javascript,jquery,Javascript,Jquery,我正在尝试从页面上的元素添加一些像素。这样我就可以创建一个新元素并将其放置在上面 posy = document.getElementById('user').style.top + 20; 但它返回的是“50px20”,我还没有尝试减去它,但我应该怎么做才能防止它返回“px” 在jQuery中有这样做的方法吗 谢谢, 亚历克斯。你问的有点让人困惑。您说需要top属性,但这可能是元素在页面上的位置或其样式的顶部值。有一个明显的区别。听起来您想要元素的位置,因为您将结果存储在posy中。这与获
posy = document.getElementById('user').style.top + 20;
但它返回的是“50px20”,我还没有尝试减去它,但我应该怎么做才能防止它返回“px”
在jQuery中有这样做的方法吗
谢谢,
亚历克斯。你问的有点让人困惑。您说需要
top
属性,但这可能是元素在页面上的位置或其样式的顶部值。有一个明显的区别。听起来您想要元素的位置,因为您将结果存储在posy
中。这与获取CSS的最大值不同,CSS的最大值只有在样式表中定义后才会存在
要在jQuery中获取top
CSS值,可以使用
$('selector').css('top');
要获取元素的位置,请使用jQuery的offset()
或position()
方法。你可能会想要补偿
$('selector').offset().top; //or .left
要修复px
或em
的返回值,请尝试parseInt
parseInt(value);
你问的有点让人困惑。您说需要
top
属性,但这可能是元素在页面上的位置或其样式的顶部值。有一个明显的区别。听起来您想要元素的位置,因为您将结果存储在posy
中。这与获取CSS的最大值不同,CSS的最大值只有在样式表中定义后才会存在
要在jQuery中获取top
CSS值,可以使用
$('selector').css('top');
要获取元素的位置,请使用jQuery的offset()
或position()
方法。你可能会想要补偿
$('selector').offset().top; //or .left
要修复px
或em
的返回值,请尝试parseInt
parseInt(value);
JavaScript的
+
运算符执行字符串的串联以及数字的添加。这可能会非常令人困惑,但一旦您知道,使用以下方法很容易解决:
还有一个怪癖:parseInt(number)
并不总是像预期的那样工作。如果number
是一个以前导零开始的数字字符串(如0123
),则parseInt将假定它位于基数8中
要确保它按预期工作,请使用radix
:parseInt(数字,10)代码>
附言:关于你的潜在意图,我有一个很好的观点。虽然我同意他的建议,使用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;
(基于)JavaScript的+
运算符执行字符串的串联以及数字的添加。这可能会非常令人困惑,但一旦您知道,使用以下方法很容易解决:
还有一个怪癖:parseInt(number)
并不总是像预期的那样工作。如果number
是一个以前导零开始的数字字符串(如0123
),则parseInt将假定它位于基数8中
要确保它按预期工作,请使用radix
:parseInt(数字,10)代码>
附言:关于你的潜在意图,我有一个很好的观点。虽然我同意他的建议,使用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;
(基于)普通Javascript方法:
posy=document.getElementById('user').style.top.replace('px','')+20代码>
jQuery方法:
posy=$('user').css('top').replace('px','')+20代码>普通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;
试试这个:
posy = parseInt(document.getElementById('user').style.top) + 20;
谢谢你,伙计!很抱歉解释得不够充分,但效果很好!谢谢你,伙计!很抱歉解释得不够充分,但效果很好!这对我也很有帮助。谢谢这也帮了我很大的忙。谢谢