简体   繁体   English

页面刷新后如何保值?

[英]How to retain value after page refresh?

I managed to get the number go up after pressing each button, but I need the value to stay after refreshing the page.按下每个按钮后,我设法获得了数字 go,但我需要在刷新页面后保留该值。 I understand I could use localStorage , but I do not understand how it works.我知道我可以使用localStorage ,但我不明白它是如何工作的。

<form>
  <input type="text" id="number" value="0" />
  <input type="button" onclick="incrementValue10()" value="$10" />
  <input type="button" onclick="incrementValue20()" value="$20" />
  <input type="button" onclick="incrementValue50()" value="$50" />
</form>
function incrementValue10() {
  var value = parseInt(document.getElementById('number').value, 10);
  value = isNaN(value) ? 0 : value;
  value += 10;
  document.getElementById('number').value = value;
}

function incrementValue20() {
  var value = parseInt(document.getElementById('number').value, 10);
  value = isNaN(value) ? 0 : value;
  value += 20;
  document.getElementById('number').value = value;
}

function incrementValue50() {
  var value = parseInt(document.getElementById('number').value, 10);
  value = isNaN(value) ? 0 : value;
  value += 50;
  document.getElementById('number').value = value;
}

To use localStorage you simply need to call setItem() to save a value and getItem to retrieve it.要使用 localStorage,您只需调用setItem()来保存值并调用getItem来检索它。

It's also worth noting that you should not be using onX attributes.还值得注意的是,您不应使用onX属性。 They are bad practice.他们是不好的做法。 Use unobtrusive event handlers instead.请改用不显眼的事件处理程序。 Also, you can easily DRY the code up by attaching a single function to all elements and varying its action by a data attribute on each one.此外,您可以通过将单个 function 附加到所有元素并通过每个元素的data属性改变其操作来轻松地 DRY 代码。 Something like this:是这样的:

let output = document.querySelector('#number');

// save the value on click of the button
document.querySelectorAll('.inc').forEach((el) => {
  el.addEventListener('click', function() {
    var newValue = parseFloat(output.value) + parseFloat(this.dataset.inc);
    output.value = newValue;
    localStorage.setItem('number', newValue);
  });
});

// retrieve the value when the page loads
var oldValue = localStorage.getItem('number') || 0;
output.value = oldValue;
<form>
  <input type="text" id="number" value="0" />
  <input type="button" class="inc" data-inc="10" value="$10" />
  <input type="button" class="inc" data-inc="20" value="$20" />
  <input type="button" class="inc" data-inc="50" value="$50" />
</form>

Note that SO snippets block access to localStorage, so here's a fully working jsFiddle请注意,SO 片段会阻止对 localStorage 的访问,因此这是一个完全可用的jsFiddle

You can use localstorage for this:您可以为此使用本地存储:

 if(localStorage.getItem('number') != ""){
    document.getElementById('number').value = localStorage.getItem('number');
 }

 function incrementValue10()
 {
    var value = parseInt(document.getElementById('number').value, 10);
    value = isNaN(value) ? 0 : value;
    value+=10;
    document.getElementById('number').value = value;
    localStorage.setItem('number', document.getElementById('number').value)

}
function incrementValue20()
{
  var value = parseInt(document.getElementById('number').value, 10);
    value = isNaN(value) ? 0 : value;
   value+=20;
   document.getElementById('number').value = value;
   localStorage.setItem('number', document.getElementById('number').value)

}
function incrementValue50()
{
   var value = parseInt(document.getElementById('number').value, 10);
   value = isNaN(value) ? 0 : value;
   value+=50;
   document.getElementById('number').value = value;
   localStorage.setItem('number', document.getElementById('number').value)

 }

As per the code, you are just storing the values in memory(heap).根据代码,您只是将值存储在内存(堆)中。 When page is re-loaded browser just allocates new memory and you can't retain the previous values.重新加载页面时,浏览器只会分配新的 memory 并且您无法保留以前的值。 So store the values in some persistence like client side(localstorage, sssionstorage and Index DB) if it is entirely related to the particular client's UI state, servr side Databases like SQL, NoSQL, RDBMS.因此,如果值与特定客户端的 UI state、服务器端数据库(如 SQL、NoSQL、RDBMS)完全相关,则将值存储在客户端(localstorage、sssionstorage 和 Index DB)等持久性中。

Refer this link for basic understanding of client side storage.请参阅此链接以基本了解客户端存储。

https://www.w3schools.com/html/html5_webstorage.asp https://www.w3schools.com/html/html5_webstorage.asp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM