javascript刷新页面后继续运行,不从头执行

我有一个html页面,有两张图表,页面每次只显示一张图表,打算每五秒刷新一次页面(为了更新图表),然后页面显示下一张图表。我现在一刷新页面就继续显示第一张图表了,并不切换... 我有一个html页面,有两张图表,页面每次只显示一张图表,打算每五秒刷新一次页面(为了更新图表),然后页面显示下一张图表。
我现在一刷新页面就继续显示第一张图表了,并不切换图表。
希望大家可以给我具体的代码,谢谢。

var g1 = document.getElementById('g1');
var g2 = document.getElementById('g2');
var timer = null;
var a = true;

function change(){

if (a) {
g1.style.display = 'block';
g2.style.display = 'none';
a = false;
}else{
g1.style.display = 'none';
g2.style.display = 'block';
a = true;
}
}
timer = setInterval(change,5000);
忘了一点代码,,在if和else的最后还有一句 window.location.reload();
展开
 我来答
xiangyuecn
2013-09-10 · TA获得超过336个赞
知道小有建树答主
回答量:408
采纳率:0%
帮助的人:308万
展开全部
你定义的a变量没有传递到下一个页面,刷新之后获取不到
可以保存到cookie里或localStorage里
定义a的时从存储里取值,或默认值 如var a=localStorage["a"]||true;
这样就知道该显示哪个了

再说一下,你的延迟逻辑不对,页面都刷新了,你还去把某个设置为block有什么意义?
改成页面加载时运行方法,延迟函数只刷新页面。
fengxingwei
2013-09-10 · TA获得超过180个赞
知道答主
回答量:35
采纳率:0%
帮助的人:29.1万
展开全部
你的需求涉及到了状态保持,通常是通过服务端传参实现的;如果没有服务端的话只能通过本地存储,或向url中传参进行状态的保持,这样页面每次刷新之后,就能知道要显示哪一张图表了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
趣事情
2015-11-14 · 知道合伙人互联网行家
趣事情
知道合伙人互联网行家
采纳数:517 获赞数:5452
电脑技术,软件开发。移动开发。网站建设相关专业知识。都可以提供解答和相关技术指导。

向TA提问 私信TA
展开全部
1、在body中用onload:

<body onload="myfunction()">

2、在脚本中用window.onload:

<script type="text/javascript">
function myfun()
{
alert("this window.onload");
}
/*用window.onload调用myfun()*/
window.onload=myfun;//不要括号
</script>

下面这个例子在页面完成加载之后改变id_1的背景颜色。

<script language="javascript" >
function myfun() {
document.getElementById("id_1").style.background= "#000"; // 改变背景颜色
}
// 用js实现在加载完成一个页面后自动执行一个方法
/*用window.onload调用myfun()*/
window.onload=myfun;//不要括号
</script>
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友dde64d5e7
2013-09-10 · TA获得超过2310个赞
知道小有建树答主
回答量:1430
采纳率:66%
帮助的人:1416万
展开全部
    <div id = "g1"><img src="https://gss0.baidu.com/-vo3dSag_xI4khGko9WTAnF6hhy/pic/w%3D230/sign=91b5680396dda144da096bb182b7d009/95eef01f3a292df57d9c6005bd315c6034a87347.jpg"/></div>
<div id = "g2" style="display:none"><img src="https://gss0.baidu.com/-4o3dSag_xI4khGko9WTAnF6hhy/pic/w%3D230/sign=74d1f5d430adcbef013479059cae2e0e/5d6034a85edf8db16f60b0740823dd54564e7450.jpg"/></div>
<script>
var g1 = document.getElementById('g1');
       var g2 = document.getElementById('g2');
       var timer = null,ii=1;
       var a = location.search ? eval(location.search.substr(1)) :true;

change(1);

function change(c){
    g1.style.display = a ? "block" : "none";
    g2.style.display = a ? "none" : "block";
    
        if(!c){
            a=!a;
                location.replace("?"+a); 
        } 
        timer = setTimeout(change,3000);  
       } 
</script>
追问
问题解决了,我又加了50分,还想问下,如果我是三个图表该怎么改呢?谢谢
追答

不好意思,前两天太忙,没来知道。

  <style>div{font-size: 32px;}</style>
    <div id = "g1">1</div>
<div id = "g2" style="display:none">2</div>
<div id = "g3" style="display:none">3</div>
<script>
function $(s){
  return document.getElementById(s);
}
       var timer = null,
       i=1,
       m=1,
       a = location.search ? location.search.substr(1) :1;

change(1);

function change(c){
  while($("g"+i)){
      $("g"+i).style.display = i==a ? "block": "none";
      m=i;
      i++;
  }
        if(!c){
            a++;
                location.replace("?"+(a>m?1:a)); 
        } 
        timer = setTimeout(change,3000);  
       } 
</script>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友7f56612
2013-09-10 · 超过26用户采纳过TA的回答
知道答主
回答量:72
采纳率:0%
帮助的人:64.2万
展开全部
function change(){
    if (a) {           
         g1.style.display = 'block';
         g2.style.display = 'none';
         a = false;        
    }else{         
         //g1.style.display = 'none';//把这句注释掉
         g2.style.display = 'block';
         a = true;        
    }        
}
更多追问追答
追问
?这是为什么,没有意义啊……
追答
你reload() 之后就一切都从头再来了~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式