Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.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_Jquery_Html_Web Applications_Web - Fatal编程技术网

在整个程序期间更改变量的值:JavaScript

在整个程序期间更改变量的值:JavaScript,javascript,jquery,html,web-applications,web,Javascript,Jquery,Html,Web Applications,Web,我有几个.js文件,每个文件包含不同的功能,还有几个HTML文件显示网站的不同部分。我在main.js中声明了一个名为var lang=ENG的变量。但是,如果用户没有选择语言来更改网站内容,这是默认语言。如果单击index.html中的按钮: <button id="french" onclick="changeLang('French')">French</button> 在当前浏览期间的剩余时间内,它应该将var lang的语言永久更改为FRE。我尝试过使用inn

我有几个.js文件,每个文件包含不同的功能,还有几个HTML文件显示网站的不同部分。我在main.js中声明了一个名为var lang=ENG的变量。但是,如果用户没有选择语言来更改网站内容,这是默认语言。如果单击index.html中的按钮:

<button id="french" onclick="changeLang('French')">French</button>

在当前浏览期间的剩余时间内,它应该将var lang的语言永久更改为FRE。我尝试过使用innerHTML,一个单击侦听器,一个返回新值的函数,即var lang=setLanguageinp,但似乎没有任何效果。有人能给我一个建议吗?我正在处理一个大型的现有代码数据库,所以我希望在这种情况下,目前不是更好的方式来实现一个语言设施的网站,虽然这肯定是一个改进,我会长期工作。谢谢

如果我理解正确,您希望即使在加载新文档时信息也能保持不变。就每个文档而言,没有“程序的持续时间”,但您可以通过写入和读取sessionStorage对象来跨会话存储数据

设置:

获取:

您还可以使用cookies,如果您需要支持旧式浏览器,这可能是必需的

编辑: 在重新阅读您的问题时,我意识到听起来您根本无法设置语言变量,更不用说在整个浏览器会话中了。如果是这样,我怀疑您遇到了变量范围问题。也许给我们看看changeLang函数?例如,如果lang是在全局范围内声明的,则设置函数不应使用“var”,否则它将仅在其局部范围内创建具有该名称的新变量

var lang = 'ENG';
function changeLang(newLang) { lang = newlang };

如果我理解正确,您希望即使在加载新文档时也能保留信息。就每个文档而言,没有“程序的持续时间”,但您可以通过写入和读取sessionStorage对象来跨会话存储数据

设置:

获取:

您还可以使用cookies,如果您需要支持旧式浏览器,这可能是必需的

编辑: 在重新阅读您的问题时,我意识到听起来您根本无法设置语言变量,更不用说在整个浏览器会话中了。如果是这样,我怀疑您遇到了变量范围问题。也许给我们看看changeLang函数?例如,如果lang是在全局范围内声明的,则设置函数不应使用“var”,否则它将仅在其局部范围内创建具有该名称的新变量

var lang = 'ENG';
function changeLang(newLang) { lang = newlang };

听起来您的问题在于变量范围。这里有一个关于JavaScript变量作用域的复杂问题:

编辑:如果这不是范围问题,请看分号的答案

基本前提是您的lang变量必须是全局变量,然后您应该能够在代码中的任何其他地方修改它

它应该是这样的:

在主文件中,在任何函数之外,用var关键字声明变量,如:var lang='ENG'

然后,当您想在函数内部更改变量时,很可能不使用var关键字来设置变量,如下所示:

function changeLanguage(l) {
    lang = l;
}

然后,您应该能够在其他任何地方使用lang并获取最新的值。

听起来您的问题在于变量范围。这里有一个关于JavaScript变量作用域的复杂问题:

编辑:如果这不是范围问题,请看分号的答案

基本前提是您的lang变量必须是全局变量,然后您应该能够在代码中的任何其他地方修改它

它应该是这样的:

在主文件中,在任何函数之外,用var关键字声明变量,如:var lang='ENG'

然后,当您想在函数内部更改变量时,很可能不使用var关键字来设置变量,如下所示:

function changeLanguage(l) {
    lang = l;
}

然后,您应该能够在其他任何地方使用lang并获取最新的值。

使用cookies/使用服务器端语言将解决您的持久性问题。如何使用cookies存储变量?我没有设置SQL server,因此无法使用数据库存储此信息。使用cookies/使用服务器端语言将解决您的持久性问题。我如何使用cookies存储变量?我没有设置SQL server,因此无法使用数据库存储此信息。我的问题是会话存储,这解决了我的问题,谢谢!这在所有浏览器中都有效,但不受支持。例如,我的firefox浏览器,是否有其他方法使其受支持?sessionStorage在firefox中有效,但在从本地文件加载页面时无效。哦,我明白了,我是从本地文件加载的。谢谢我的问题是
与会话存储一样,这解决了我的问题,谢谢!这在所有浏览器中都有效,但不受支持。例如,我的firefox浏览器,是否有其他方法使其受支持?sessionStorage在firefox中有效,但在从本地文件加载页面时无效。哦,我明白了,我是从本地文件加载的。谢谢