2

这是我第一次尝试 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 变量?

谢谢!-克里斯汀

更新:

知道了!!!

我不需要通过 window.opener 访问它——我已经将变量传递给了窗口,所以我可以直接访问它们。

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}

多谢你们!!-克里斯汀

4

4 回答 4

3

HTML 本地存储 (HTML5) http://diveintohtml5.info/storage.html

在你的第一个文件中:

localStorage.setItem("FirstN", document.frmUserName.inFirstN.value);

在第二个:

var FirstN = localStorage.getItem("FirstN");

或者简单地设置 Cookies...

http://www.w3schools.com/js/js_cookies.asp

但我认为这应该使用 PHP 或至少不是 JS 来完成

于 2013-04-25T12:56:57.627 回答
2

使用window.opener新窗口中的对象。

window.opener.FirstN

W3Schools 示例

我可以将 JavaScript 变量传递到另一个浏览器窗口吗?

以下适用于我的设置:

第一个.html

<html>
 <script>
   var Var1 = "MyStringVar";
   var Var2 = 123;
   var win = window.open("second.html");
 </script>
</html>

第二个.html

<html>
 <script>
   alert(window.opener.Var1);
   alert(window.opener.Var2);
 </script>
</html>
于 2013-04-25T12:50:18.030 回答
0

更新:

知道了!!!

我不需要通过 window.opener 访问它——我已经将变量传递给了窗口,所以我可以直接访问它们。

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}

多谢你们!!-克里斯汀

于 2013-04-26T13:18:28.617 回答
0

在第一个窗口文件中:

window.yourVariable = 值;

在第二个窗口文件中:

window.opener.yourVariable

说明:将 yourVariable 声明为全局并将其绑定到父窗口。如果从父窗口打开新窗口,则可以从“window.opener”访问数据。由于 yourVariable 被声明为全局变量,因此可以使用“window.opener.yourVariable”从子窗口访问父窗口的值

于 2016-01-14T07:36:31.413 回答