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