Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在新窗口中访问JavaScript变量_Javascript_Variables - Fatal编程技术网

在新窗口中访问JavaScript变量

在新窗口中访问JavaScript变量,javascript,variables,Javascript,Variables,这是我第一次尝试JavaScript,所以如果事情有点混乱,我道歉 我有两个html页面(Certificate1.html和Certificate2.html)。我试图做的是在Certificate1.html上提示用户输入他/她的姓名,然后将该信息传递给Certificate2.html。此时,用户名将显示在他可以打印的证书中 两个html页面引用相同的JavaScript文件(Certificate1.js)。第一页调用passName(): 这似乎工作正常。我陷入困境的是Certific

这是我第一次尝试JavaScript,所以如果事情有点混乱,我道歉

我有两个html页面(Certificate1.html和Certificate2.html)。我试图做的是在Certificate1.html上提示用户输入他/她的姓名,然后将该信息传递给Certificate2.html。此时,用户名将显示在他可以打印的证书中

两个html页面引用相同的JavaScript文件(Certificate1.js)。第一页调用passName():

这似乎工作正常。我陷入困境的是Certificate2.html调用的函数placeName()。我让它在加载时启动,我知道它正确地访问了函数(我刚刚在那里插入了一个警报,它就出现了)。我不知道如何访问我在passName()中传递给Cert的FirstN和LastN变量。我试过document.FirstN,但是我得到了“undefined”。我如何访问我(认为我)传递的FirstN和LastN变量

谢谢! -克里斯汀

更新:

明白了

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

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
谢谢大家!!
-Kristin

在新窗口中使用
窗口打开器
对象

window.opener.FirstN

以下内容适用于我的设置:

first.html

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

var Var1=“MyStringVar”;
VarVar2=123;
var win=window.open(“second.html”);
second.html

<html>
 <script>
   alert(window.opener.Var1);
   alert(window.opener.Var2);
 </script>
</html>

警报(window.opener.Var1);
警报(window.opener.Var2);
HTML本地存储(HTML5)

在第一个文件中:

localStorage.setItem("FirstN", document.frmUserName.inFirstN.value);
在第二个例子中:

var FirstN = localStorage.getItem("FirstN");
或者简单地设置Cookies

但我认为这应该使用PHP完成,或者至少不使用JS更新:

明白了

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

function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
function placeName() {
    //alert(FirstN);
    document.getElementById("pUserName").innerHTML = FirstN + " " + LastN;
}
谢谢大家-Kristin在第一个窗口文件中:

window.yourVariable=值

在第二个窗口文件中:

window.opener.yourVariable

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

谢谢您的回复!我可以将其放在单独的JavaScript文件中,还是需要将其放在Certificate2.html中?这假设源窗口保持打开且可用。好的,我将以下内容放入Certificate2.html中:函数placeName(){alert(window.opener.firstN);},并且placeName()再次被称为onLoad。但是,警报仍显示“未定义”。是的,第一个窗口保持打开并可用。请参阅编辑。确保在window.open调用之前声明变量。第二个窗口中的onLoad函数仍将很快被调用,并且可能尚未设置变量。这可能是您第一次尝试使用
Cert.FirstN
等时发生的情况。如果您在
警报(FirstN)
之前放置
警报(“这让您等待”)
,您可能会显示FirstN,因为延迟允许设置变量。您好,我真的不喜欢使用PHP(因为我对它完全不熟悉),我们真的不需要把信息保存在任何地方。一旦用户访问Certificate2.html,他们就可以打印它,但不会存储他们的名字或任何东西。如果他们想打印另一个,他们需要再次输入他们的信息。如果你不想持久化数据,PHP确实不是那么必要。我没有看到你在使用
窗口。打开
打开第二页。所以也许StuckAtWork的答案对你更合适。除了window.opener.FirstN仍然给我“未定义”=/