如何利用JavaScript 在页面间传值
问题场景如下:
在 a.html 页面中,<form> 的 onsubmit 事件调用一个方法 foo( ),打开 b.html 页面的同时给 b.html 传递参数。方法 foo( ) 中需要传递变量参数到 b.html 页面,在 b.html 页面接受参数值,但不能使用服务器端技术。
解决代码如下:

<html>
<head>
<title> demo </title>
<meta name="Author" content="xugang" />
<script type="text/javascript">
function foo(){
var a ="abc"; // a为变量值
var str = "b.html?id="+a+";";
//alert(document.frm.action);
//方案一(无效)
// document.frm.action = str;
//方案二(无效)
// window.location.href = str;
//方案三(有效)
window.location.replace(str);
return false;
}
</script>
</head>
<body>
<FORM name="frm" method="get" onsubmit = "return foo()" >
<INPUT TYPE="SUBMIT" />
</FORM>
</body>
</html>
<head>
<title> demo </title>
<meta name="Author" content="xugang" />
<script type="text/javascript">
function foo(){
var a ="abc"; // a为变量值
var str = "b.html?id="+a+";";
//alert(document.frm.action);
//方案一(无效)
// document.frm.action = str;
//方案二(无效)
// window.location.href = str;
//方案三(有效)
window.location.replace(str);
return false;
}
</script>
</head>
<body>
<FORM name="frm" method="get" onsubmit = "return foo()" >
<INPUT TYPE="SUBMIT" />
</FORM>
</body>
</html>
注意:必须 b.html 页面事先存在即可。
b.html 获得参数值的代码如下:

var getQueryString = function(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return r[2]; return "";
}
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return r[2]; return "";
}
补记:
================================================================================================
今天一早起来,居然从睡梦中找到了更好的解决办法。
看来睡觉是灵感之源,呵呵 ^_^
myjs.js 代码:

function foo(){
var str = "abc";
//document.forms[0].hid.value = str;
var frm = window.event.srcElement;
frm.hid.value = str;
return true;
}
var str = "abc";
//document.forms[0].hid.value = str;
var frm = window.event.srcElement;
frm.hid.value = str;
return true;
}
a.html 代码:

<html>
<head>
<title> demo </title>
<meta name="Author" content="xugang" />
<script src="myjs.js"></script>
</head>
<body>
<FORM name="frm" METHOD="get" ACTION="b.html" onsubmit="return foo()">
<INPUT TYPE="hidden" id="hid" name="hid">
<INPUT TYPE="submit" value="提交">
</FORM>
</body>
</html>
<head>
<title> demo </title>
<meta name="Author" content="xugang" />
<script src="myjs.js"></script>
</head>
<body>
<FORM name="frm" METHOD="get" ACTION="b.html" onsubmit="return foo()">
<INPUT TYPE="hidden" id="hid" name="hid">
<INPUT TYPE="submit" value="提交">
</FORM>
</body>
</html>
注意:给 b.html 页面传值时,b.html 页面必须事先已存在!
b.html 代码:

<HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write(decodeURIComponent(location.search.substr(3)));
</SCRIPT>
</BODY>
</HTML>
<HEAD>
<TITLE> New Document </TITLE>
</HEAD>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write(decodeURIComponent(location.search.substr(3)));
</SCRIPT>
</BODY>
</HTML>
作者: XuGang 网名:钢钢 |
出处: http://xugang.cnblogs.com |
声明: 本文版权归作者和博客园共有。转载时必须保留此段声明,且在文章页面明显位置给出原文连接地址! |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架