如何将一个js变量从一个html文件传递到另一个


How do i pass a js variable from one html file to another?

我的问题很简单,但由于我对合并js、php和html还不够熟练,我找不到解决这个问题的方法。问题涉及3个文件:

JS1.js

function foobar(foo){
...
}

这里的foo与从HTML1.html文件生成的foo相同

HTML1.html

...<?php
$something = Object->method();
$array = Object->anotherMethod($something);
echo "<script type='"text/javascript'"> 
            var foo =" . json_encode($array) . ";
     </script> ";
?>
...

在这里我生成php数组的json_encode(d)版本

HTML2.html

...<head>
<script type="text/JavaScript" src="js/JS1.js">
</head>
<body>
...
... onClick = '"foobar(foo)'">";
...
</body>

这里,基本上,我需要它作为参数来在JS1.js文件中运行我的foobar-js函数

所以我的问题是,如何将foo从HTML1.html传递到HTML2.html

PS:不幸的是,我有两个拆分的html文件,因为我需要它们,而且两者都做不同的事情,否则问题根本不会发生:)只是为了清理东西

在这种情况下,使用cookie:在HTML1中,设置var foo后,将其设置在cookie中然后从HTML2 中获取

辅助程序代码(http://www.w3schools.com)js:

function setCookie(c_name,value,exdays)
{
var exdate=new Date();
exdate.setDate(exdate.getDate() + exdays);
var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=c_name + "=" + c_value;
}

function getCookie(c_name)
{
var i,x,y,ARRcookies=document.cookie.split(";");
for (i=0;i<ARRcookies.length;i++)
{
  x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
  y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
  x=x.replace(/^'s+|'s+$/g,"");
  if (x==c_name)
    {
    return unescape(y);
    }
  }
}

有两种方法可以做到这一点,

  • 1:[easiest,cleanest]在浏览器上设置一个cookie,javascript可以阅读w3schools.com上的javascript cookie

  • 2:[这是一个非常糟糕的主意]让javascript在所有值的末尾添加一个值用于传递值的链接