使用一个JS文件在多个HTML文件中保留的变量问题

时间:2015-11-22 15:37:54

标签: javascript jquery html

这给我带来了很多麻烦,到目前为止,我发现的每一个stackoverflow问题/答案以及其他所有谷歌搜索都没有帮助我。

我有两个HTML文件。一个叫做cs,另一个叫做csi。它们都链接到一个常见的js文件,我试图实现将在两个文件中持久保存的变量。

变量在用户输入的cs html中定义,然后在csi中显示。

这里是Javascript的样子。我有它在主体加载的cs html上只运行CS,而在主体加载的csi html上只运行。

颜色仍然存在,变量MyApp.str在cs中建立,但当它加载到csi时,MyApp.str变为"未定义"

我想我会避免这种情况,因为我建立了MyApp.str = strChar,它本身就是一些用户输入,仅在cs中可用。

var MyApp = {}; // Globally scoped object

function onlyCS(){
    MyApp.color = 'green';
    setInterval(strdefine, 3000)
}

function onlyCSI(){
    MyApp.color = 'red';
    setInterval(bar, 3000)
}

function strdefine(){
    alert(MyApp.color); // Alerts 'green'
    strChar = parseInt($('#Xdemo').text(), 10);
    $('#result').text(strChar);
    MyApp.str = strChar;
    alert('the myapp global obj (str) is currently ' + MyApp.str);
}

function bar(){
    alert(MyApp.color); // Should alert 'red'
    alert('the myapp global obj (str) is currently ' + MyApp.str);
}

如果有人能帮助我,我真的很感激。

编辑:评论帮助我弄清楚使用localstorage和变量是我的问题的一个很好的解决方案。

在strdefine中我把

strChar = parseInt($('#Xdemo').text(), 10);
localStorage.setItem('str', strChar);

并且在栏内我放

alert('LS "str" is currently ' + localStorage.str);
var ex = localStorage.getItem('str') || 0;
$('#result').text(ex);

1 个答案:

答案 0 :(得分:1)

您可以选择:

  • 坚持/读取cookie
  • 在本地存储中保留/读取
  • 在会话存储中保留/读取
  • 发送到服务器然后从服务器返回(可能在一些会话变量中)

将变量放在JavaScript对象中不会持续超过页面刷新。您还可以使用AJAX读取一些HTML部分,然后将其应用到某个容器中的页面(不是整页,只是部分像<div>my new</div>等。存储在某个服务器端文件中