我这里有这个代码:
function slideUp(elem,num,speed,lim){
var pos = document.getElementById(elem).style.top
var moveUp = num
if(lim != pos){
var int = setInterval(function(){
moveUp = moveUp-100;
document.getElementById(elem).style.top=+moveUp+"px";
},speed)
}else if(lim == pos){
clearInterval(int);
}
}
我遇到的问题是“pos”变量没有值。我希望它保持我指定的元素的顶部位置
答案 0 :(得分:3)
我认为您的问题是document.getElementById(elem).style.top
没有值,因此pos
没有值。
您需要自己计算财产。您需要使用currentStyle
/ getComputedStyle
,因为style.top
值可以来自CSS,也可以隐式定义。
来自:http://www.quirksmode.org/dom/getstyles.html
function getStyle(el,styleProp)
{
var x = document.getElementById(el);
if (x.currentStyle)
var y = x.currentStyle[styleProp];
else if (window.getComputedStyle)
var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
return y;
}
使用类似:
var top = getStyle(document.getElementById(elem), 'top');
答案 1 :(得分:2)
直接从样式对象中读取通常不起作用,因为只有在从JavaScript设置这些值时才会填充它。要获取从HTML或CSS设置的值,请使用getComputedStyle查询元素的实际应用样式。
请参阅Mozilla文档中的此示例:
function getTheStyle() {
var elem= document.getElementById("elem_container");
var theCSSprop= window.getComputedStyle(elem,null).getPropertyValue("height");
document.getElementById("output").innerHTML= theCSSprop;
}
答案 2 :(得分:0)
我在这里看到两个完全不同的问题:
获得风格是一种痛苦,它在IE中与其他浏览器不同。 van Campen先生的回答描述了如何获得它。
哦,在键盘上找到分号键: - )
答案 3 :(得分:0)
function slideUp(elem,num,speed,lim){
var pos = document.getElementById(elem).style.top
var moveUp = num
if(lim != pos){
var int = setInterval(function(){
moveUp = moveUp-100;
pos += moveUp;
document.getElementById(elem).style.top=pos+"px";
},speed)
} else if(lim == pos) {
clearInterval(int);
}
}