这是我的第一次JavaScript尝试,所以如果事情有点受损,我会道歉。
我有两个html页面(Certificate1.html和Certificate2.html)。我要做的是在Certificate1.html上提示用户输入他/她的名字,然后将该信息传递给Certificate2.html。此时,用户的姓名将显示在他可以打印的证书中。
两个html页面都引用相同的JavaScript文件(Certificate1.js)。第一页调用passName():
function passName() {
FirstN = document.frmUserName.inFirstN.value;
LastN = document.frmUserName.inLastN.value;
// alert(FirstN); // good
// alert(LastN); // good
var Cert = window.open("Certificate2.html");
Cert.FirstN = FirstN;
Cert.LastN = LastN;
//alert(Cert.FirstN); //good
//alert(Cert.LastN); //good
}
这似乎工作正常。我被卡住的地方是Certificate2.html调用的函数placeName()。我已经解决了onLoad,我知道它正在正确访问该功能(我只是在那里发出警报并且它出现了)。我不知道如何访问我在passName()中传递给Cert的FirstN和LastN变量。我已经尝试过document.FirstN,但我得到了“未定义”。如何访问我(我认为)传递的FirstN和LastN变量?
谢谢! -Kristin
更新:
得到了!!!
我不需要通过window.opener访问它 - 我已经将变量传递给窗口,所以我可以直接访问它们。
function placeName() {
//alert(FirstN);
document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
谢谢你们! -Kristin
答案 0 :(得分:3)
HTML LocalStorage(HTML5) http://diveintohtml5.info/storage.html
在你的第一个档案中:
localStorage.setItem("FirstN", document.frmUserName.inFirstN.value);
在第二个:
var FirstN = localStorage.getItem("FirstN");
或只是设置Cookie ...
http://www.w3schools.com/js/js_cookies.asp
但我认为这应该使用PHP或至少不是JS
来完成答案 1 :(得分:2)
在新窗口中使用window.opener
对象。
window.opener.FirstN
Can I pass a JavaScript variable to another browser window?
以下内容适用于我的设置:
first.html
<html>
<script>
var Var1 = "MyStringVar";
var Var2 = 123;
var win = window.open("second.html");
</script>
</html>
second.html
<html>
<script>
alert(window.opener.Var1);
alert(window.opener.Var2);
</script>
</html>
答案 2 :(得分:0)
更新:
得到了!!!
我不需要通过window.opener访问它 - 我已经将变量传递给窗口,所以我可以直接访问它们。
function placeName() {
//alert(FirstN);
document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
谢谢你们! -Kristin
答案 3 :(得分:0)
在第一个窗口文件中:
window.yourVariable = value;
在第二个窗口文件中:
window.opener.yourVariable
decription:将yourVariable声明为全局并将其绑定到父窗口。 如果从父窗口打开新窗口,则可以从'window.opener'访问数据。由于yourVariable被声明为全局,因此可以使用'window.opener.yourVariable'从子窗口访问父窗口的值