javascript静态页面传值的三种方法

一:JavaScript静态页面值传递之URL篇
  能过URL进行传值.把要传递的信息接在URL上.
Post.htm

<input type="text" name="username">

<input type="text" name="sex">

<input type="button" 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" >

/*

*--------------- Read.htm -----------------

* Request[key]

* 功能:实现ASP的取得URL字符串,Request("AAA")

* 参数:key,字符串.

* 实例:alert(Request["AAA"])

*--------------- Request.htm -----------------

*/

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><script language="JavaScript">

<!--

function Request(strName)

{

var strHref = "www.abc.com/index.htm?a=1&b=1&c=测试测试";

var intPos = strHref.indexOf("?");

var strRight = strHref.substr(intPos + 1);

var arrTmp = strRight.split("&");

for(var i = 0; i < arrTmp.length; i++)

{

var arrTemp = arrTmp[i ].split("=");

if(arrTemp[0].toUpperCase() == strName.toUpperCase()) return arrTemp[1];

}

return "";

}

alert(Request("a"));

alert(Request("b"));

alert(Request("c"));

//-->

</script>

<script>

String.prototype.getQuery = function(name)

{

  var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");

  var r = this.substr(this.indexOf("?")+1).match(reg);

  if (r!=null) return unescape(r[2]); return null;

}

var str ="www.abc.com/index.htm?a=1&b=1&c=测试测试";

alert(str.getQuery("a"));

alert(str.getQuery("b"));

alert(str.getQuery("c"));

</script>
复制代码优点:取值方便.可以跨域.
缺点:值长度有限制

二:JavaScript静态页面值传递之Cookie篇
  Cookie是浏览器存储少量命名数据.
  它与某个特定的网页或网站关联在一起.
  Cookie用来给浏览器提供内存,
  以便脚本和服务器程序可以在一个页面中使用另一个页面的输入数据.
Post.htm

<input type="text" name="txt1">

<input type="button" 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>
复制代码优点:可以在同源内的任意网页内访问.生命期可以设置.
缺点:值长度有限制.

三:JavaScript静态页面值传递之Window.open篇
  这两窗口之间存在着关系.父窗口parent.htm打开子窗口son.htm
  子窗口可以通过window.opener指向父窗口.这样可以访问父窗口的对象.
Post.htm

<input type=text name=maintext>

<input type=button value="Open">

Read.htm

<script language="javascript" >

//window.open打开的窗口.

//利用opener指向父窗口.

var parentText = window.opener.document.all.maintext.value;

alert(parentText);

</script>
复制代码优点:取值方便.只要window.opener指向父窗口,就可以访问所有对象.不仅可以访问值,还可以访问父窗口的方法.值长度无限制.
缺点:两窗口要存在着关系.就是利用window.open打开的窗口.不能跨域.

posted @   94cool  阅读(304)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2009年7月 >
28 29 30 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
点击右上角即可分享
微信分享提示