使用此代码
v=new Date();
var bxx=document.getElementById('bxx');
function t(){
n=new Date();
ss={time};
s=ss-Math.round((n.getTime()-v.getTime())/1000.);
m=0;h=0;
if(s<0){
bxx.innerHTML='<a ';
}else{
if(s>59){m=Math.floor(s/60);s=s-m*60;}
if(m>59){h=Math.floor(m/60);m=m-h*60;}
if(s<10){s="0"+s}
if(m<10){m="0"+m}
bxx.innerHTML=h+':'+m+':'+s+'<br>{name}</a>';
}
window.setTimeout("t();",999);
}
t();
每当调用t()时,页面都会跳转到屏幕顶部。有什么想法吗?
{}是服务器解析变量,但它们应该导致任何问题。
通过跳跃,我的意思是滚动到底部的页面突然跳到页面顶部
答案 0 :(得分:0)
我不知道跳跃,但该代码有几个问题:
1)希望所有这些变量都声明在你没有显示的地方? (如果没有,你就会成为Horror of Implicit Globals的牺牲品,我建议避免使用它。)
2)此代码:
bxx.innerHTML='<a ';
...要求浏览器解析无效的HTML片段。
3)这段代码就是这样:
bxx.innerHTML=h+':'+m+':'+s+'<br>{name}</a>';
...以h
为例,这些是数字,因此您最终得到1:23:45<br>name</a>
。
innerHTML
属性不能包含部分元素标记,因为它表示元素的整个内容,元素不能像那样交叉(DOM是树,而不是编织)。 / p>
您需要修改代码,以便始终将完整格式的a
标记一次性写入bxx.innerHTML
属性。
一旦你这样做,如果元素的前一个内容的尺寸与新内容不同, 仍会导致一些轻微的跳跃。您可以使用CSS(具有宽度和高度的内联块元素等)来缓解这种情况。