注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

★柳暗花明★

似水年华,诠释着无力的永恒······

 
 
 

日志

 
 

静态页面之间传值方法  

2010-12-08 10:13:54|  分类: Html经典 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1.window.open()方法

优点:取值方便。只要window.opener指向父窗口,就可以访问所有对象,不仅可以访问值,还可以访问父窗口的方法,值长度无限制。

缺点:两窗口要存在着关系,就是利用window.open打开的窗口,不能跨域。

方法①:

Post.htm
<input type=text name=maintext>
<input type=button onclick="window.open('Read.htm')" value="Open">

Read.htm
<script language="javascript" >
//window.open打开的窗口,利用opener指向父窗口.
var parentText = window.opener.document.all.maintext.value;
alert(parentText);
</script>

方法②:

Post.htm

<script>
function submit()
{  var input1 = document.getElementById("inputid");
   window.open("b.htm?inputStr=" + input1.value); //传入参数
}
</script>
<input type = "text" id = "inputid" value="传递参数">
<input type = "button" onclick = "submit()" value = "提交">

Read.htm

<head>
<script>
//获得参数的方法
var request =
 {     QueryString : function(val)   {
              var uri = window.location.search;
              var re = new RegExp("" +val+ "=([^&?]*)", "ig");
              return ((uri.match(re))?(uri.match(re)[0].substr(val.length+1)):null);
             }
  }
function load(){
//调用方法获得参数
     var rt = request.QueryString("inputStr");
     var txt = document.getElementById("ceshi");
     txt.value = rt;
 }
</script>
</head>
<body onload="load()">
<form name="form1" method="post" action="">
<input name="ceshi" id="ceshi" type="text" value="">
</form>
</body>

2.Cookie方法

优点:可以在同源内的任意网页内访问,生命期可以设置。

缺点:值长度有限制。

Post.htm

<input type="text" name="txt1">
<input type="button" onclick="setCookie('baobao',document.all.txt1.value)" value="Post">
<script language="javascript" >
function setCookie(name,value)
{
/*--------------- setCookie(name,value) -----------------
* setCookie(name,value)
* 功能:设置得变量name的值
* 参数:name,字符串;value,字符串.
* 实例:setCookie('username','baobao')
*--------------- setCookie(name,value) -----------------*/
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
location.href = "Read.htm"; //接收页面.
}
</script>

 

Read.htm

<script language="javascript" >
   function getCookie(name)
 {
/*--------------- getCookie(name) -----------------
* getCookie(name)
* 功能:取得变量name的值
* 参数:name,字符串.
* 实例:alert(getCookie("baobao"));
*--------------- getCookie(name) -----------------*/
          var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
          if(arr !=null) return unescape(arr[2]); return null;
 }
alert(getCookie("baobao"));
</script>

3.URL方法

优点:取值方便,可以跨域。

缺点:值长度有限制。

Post.htm

<input type="text" name="username">
<input type="text" name="sex">
<input type="button" onclick="Post()" value="Post">
<script language="javascript" >
 function Post()
 {   //单个值 Read.htm?username=baobao;多个值 Read.htm?username=baobao&sex=male;
    url = "Read.htm?username="+escape(document.all.username.value);
    url += "&sex=" + escape(document.all.sex.value);
    location.href=url;
 }
</script>


Read.htm

<script language="javascript" >
/*--------------- Request[key] -----------------
* Request[key]
* 功能:实现ASP的取得URL字符串,Request("AAA")
* 参数:key,字符串.
* 实例:alert(Request["AAA"])
*--------------- Request[key] -----------------*/
  var url=location.search;
  var Request = new Object();
  if(url.indexOf("?")!=-1)
  {
      var str = url.substr(1); //去掉"?"号
      strs = str.split("&");
      for(var i=0;i<strs.length;i++)
       {  Request[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]);}
  }
   alert(Request["username"]);
   alert(Request["sex"]);
</script>

  评论这张
 
阅读(1870)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017