您现在的位置: 365建站网 > 365学习 > JS参数传递的实际应用

JS参数传递的实际应用

文章来源:365jz.com     点击数:770    更新时间:2009-09-13 10:48   参与评论

 在项目中,有一个ajax加载的区域,是一个Div标签,id为msg_box,这个控制链接包含在一个左侧的导航中,当从其他页面链接到这个页面时,该JS代码就失效了,原因很简单,在DOM中没有id为msg_box的div标签,该怎么解决这个问题呢?

方案:
在所有页面公用的头部文件header.tpl.HTML中写入:
<script>
function changMenu(index){
    if(typeof getElementById("msg_box") == "object"){
         //如果存在msg_box对象 则刷新该页的对象
         showMenu(index);
    }else{
         //如果不存在 则重定向到使用Ajax刷新的页面
         window.location = "/index.html";
    }
}
</script>

但是该项目index.html存在四个相同性质的页面,都需要Ajax来刷新,这样就存在一个问题,当用户点击第三个栏目时,虽然可以回到index.html,但是无法刷新内容到第三个栏目。这时有两种解决方案:

方案1:
第一步:
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(index){
    if(typeof getElementById("msg_box") == "object"){
         //如果存在msg_box对象 则刷新该页的对象
         showMenu(index);
    }else{
         //如果不存在 则重定向到使用Ajax刷新的页面
         window.location = "/index.html?type="+index;
    }
}
</script>
第二步:
改进showMenu函数
function showMenu(index){
    if(typeof getElementById("msg_box") == "object"){
         //如果存在msg_box对象 则刷新该页的对象
         ......
    }else{
         url = window.location.href;
         reg = /^(.*)\/index\.html\?type\=\d$/gi;
         if(reg.test(url)){
         //如果符合传参数页面的url。则获取该参数
         index = url.substr(url.length - 1);
         ......
         }
    }
}

方案2:
调用JS的cookie功能传递参数
在所有页面公用的头部文件header.tpl.html中写入:
<script>
function changMenu(){
    index = getCookie("index");
    if(index == null) index = 1;
    if(typeof getElementById("msg_box") == "object"){
         //如果存在msg_box对象 则刷新该页的对象
         showMenu(index);
    }else{
         setCookie("index", index);
         //如果不存在 则重定向到使用Ajax刷新的页面
         window.location = "/index.html";
    }
}

function setCookie(name, value){  
 var Then = new Date()  
 Then.setTime(Then.getTime() + 1*3600000 ) //小时  
 document.cookie = name+"="+value+";expires="+Then.toGMTString();  
}

function getCookie(name)
{
  var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
  if(arr != null) return unescape(arr[2]); return null;
}
 
</script>

如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛


发表评论 (770人查看0条评论)
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换图片
最新评论
------分隔线----------------------------