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>