更改 JavaScript 中的外部变量

Posted

技术标签:

【中文标题】更改 JavaScript 中的外部变量【英文标题】:Change External Variables in JavaScript 【发布时间】:2022-01-03 09:40:56 【问题描述】:

我有 1 个外部 JS 文件和 2 个 html 文件。

我想使用 HTML 文件 #1 更改我的 JS 文件中某些变量的值,并让其他 HTML 文件可以访问新值。

我该怎么做?

我的 JS 文件:

(buttons.js)

HTML #1:(输出:fifc = 4895239)

HTML #2:(输出:fifc = 0)

HTML #2 不输出新值,而是输出在buttons.JS (0) 中设置的原始值

有没有办法改变 fifc 以便 HTML #2 将其视为 4895239?

【问题讨论】:

meta.***.com/questions/285551/… 【参考方案1】:

拥有一个 HTML 文件意味着页面加载和 JS 变量绑定到现在显示的页面。所以,没有办法直接改变这些变量。这就像试图在另一个程序中更改一个变量。

不过,您可以使用 sessionStorage 或 localStorage 在不同的会话中保持状态(主要区别在于,即使浏览器关闭并且之后清除了 sessionStorage,localStorage 也会保持不变)。根据您的需要,我认为 sessionStorage 可能会更好,但这取决于您。

你可以这样做

// Replace fifc = 0 with this
// it basically sets the item on sessionStorage if it
// doesn't already exist
if (!sessionStorage.getItem('fifc')) 
  sessionStorage.setItem('fifc', 0),

然后,在每个页面上,您都可以使用

sessionStorage.getItem('fifc');

【讨论】:

您好,非常感谢!我会在哪里做 sessionStorage.setItem()?在我的 JS 文件或 HTML 1 中? 我尝试使用它,但它现在给我 null 作为 fifc 的值 每次需要为“持久变量”设置值时,您都使用sessionStorage.setItem 变量fifc 不再有任何意义,您的数据通过sessionStorage 持久化。如果您从sessionStorage.getItem 获得null,那是因为该项目尚未设置。检查您是否正确设置并仔细检查您的拼写。 刚刚收到,非常感谢!

以上是关于更改 JavaScript 中的外部变量的主要内容,如果未能解决你的问题,请参考以下文章

Python:如何允许“内部函数”更改多个“外部函数”中的非局部变量

从Javascript闭包访问循环中的外部变量[重复]

Java:没有来自外部类的 ArrayList 修改

props 被两次添加到在 React / Javascript 中的组件外部声明的数组变量中

如何将变量从外部 JavaScript 传递到 HTML 表单

如何让程序等待 javascript 中的变量更改?