JavaScript保留隐藏的输入变量值即使刷新页面(按F5或单击浏览器的刷新按钮)

3

我面临一个奇怪的问题,也许你们中的一些人已经遇到过。

这里是问题:

我在我的HTML(使用Perl/Mason)中有一个隐藏的输入字段。

<input type='hidden' id='noB'  name='noB' value='<% $noB%>'/> ; 

服务器端填充了值($noB)。

在我的 JavaScript 中,我正在使用

var noB = jQuery('#noB').val(); 

获取并处理值。
最重要的是,每次我需要在JavaScript函数中访问此值并将其存储在新变量中(假设noB = 3),进行一些处理并更新隐藏变量noB,使其不是全局变量。

现在,如果我在JavaScript中更改noB(例如设置为1),然后使用F5刷新页面,当页面再次加载并尝试获取该值时:

var noB = jQuery('#noB').val();

当它应该是3时,我只得到了noB = 1

请帮忙。

3个回答

2

Firefox(以及可能其他浏览器)将重新加载表单元素,其值为您刷新页面时的值,即使这不是HTML中指定的值。 简单的解决方案:通过导航回该页面而不是刷新来重新加载页面。


谢谢回复,安东尼。我理解这一点,问题在于表单元素中的值会发生变化,但JavaScript使用的是它创建的最后一个值。有没有办法避免这种情况,或者这只是浏览器的问题? - Manish

0

虽然这是一个很老的问题,但我遇到了类似的问题,并找到了解决方案:

  1. 不要使用隐藏的输入字段,而是使用label.innerHTML来存储您的值
  2. 您可以使用JavaScript访问/更改标签的innerHTML值。
  3. 每次刷新页面时,标签的值都会被刷新。

希望能对您有所帮助。


0
如果这是浏览器问题,尝试强制浏览器不缓存您的页面内容。
可以通过在HTML头部放置以下标签来实现:
    <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接