我有两个文件,比如
DataProcesser.js
var FROM;
var TO;
var CONTECT;
function getValues(fromAdd,toAdd,ContectText){
alert("method called");
FROM=fromAdd;
TO=toAdd;
CONTECT=ContectText;
alert("values are " + FROM +" "+ TO +" "+ CONTECT);
window.open('email.html','newwindow');
}
EMail.html
在身体上载
function loadData(){
document.getElementById('lblFrom').innerHTML =window.FROM;
document.getElementById('lbTo').innerHTML = window.TO;
document.getElementById('lblfrom1').innerHTML = window.FROM;
document.getElementById('lblto1').innerHTML = window.TO;
document.getElementById('txtAreaBody').value =window.CONTECT;
}
我怎样才能将自己传递给EMail.html?我在Body Onload中编写了loadData函数。结果得到未定义的值。从另一个HTML中调用getvalues函数。
答案 0 :(得分:0)
每个HTML文档都有自己的Javascript上下文。因此,您无法从另一个HTML页面访问变量。
但是你可以做的是将这些变量作为URL的一部分进行传输。您可以使用?-operator将URL与传递给它的数据分开。例如:
email.html?from=somewhere&to=somewhereElse&connect=somevalue
网络服务器只会将?
作为文件名的一部分解释,其余的是传递给它的GET参数。因此,网络服务器将返回文件email.html。在该页面上,您可以访问完整的URL并使用变量document.location
解析参数。
另一个选项是using cookies。但请记住,有些用户禁用了cookie(比禁用javascript的用户更多),所以你不应该依赖它们来获取你网站的任何主要功能。
然而,最好的方法是将所有数据存储在服务器上,并使用会话处理机制,该机制在可用时使用cookie,并使用GET参数作为后备,为每个用户分配会话ID。这一点最重要的优点是用户无法轻易篡改数据。但是,这不能单独使用客户端javascript,因为它需要服务器端脚本。
答案 1 :(得分:0)
所以变量FROM,TO,CONTECT在getValues()中有时被设置。然后调用loadData(),以便加载的HTML使用您获得的值。所以我假设getValues()和loadData()在同一个JS上下文中,变量可以直接访问。
更改此代码:
document.getElementById('lblFrom').innerHTML =window.FROM;
到
document.getElementById('lblFrom').innerHTML = FROM;
对其他变量做同样的事情。
PS:发布代码时,请同时指定流程。发布随机代码段不会帮助我们理解问题。