如何使用 onClick 逐一 increment/decrement 文本框值

How to increment/decrement textbox value by one with onClick

首先请大家帮我算一下JavaScript。没有 jQuery 或任何插件。我正在尝试对此进行编码以在 Cordova/PhoneGap 中工作。我一边自学 JavaScript 一边玩 Cordova/PhoneGap 所以请温柔点。

我有一个文本框,两边都有按钮,右边用于将文本框值加 1(+ 在其上),左边用于从文本框(- 在其上)减 1。我的目的是让 page/app 加载第一次在文本框中显示 0 值。只要有人按下 + 按钮,文本框就应该从 0 增加到 1,并且每次单击 + 都会增加 1。如果应用程序关闭并重新打开,它应该记住应用程序关闭前文本框中的最后一个数字。

它在浏览器测试中有效,它导致 PhoneGap 的 iPhone 应用程序不再识别 PhoneGap 重置应用程序等手势,按下文本框的 +/- 按钮 increments/decrements 太慢,并且尽管设置了 min="0",它仍可能变为负值。我究竟做错了什么? (我知道由于沙盒,localStorage 无法在代码片段中完成,所以如果您希望我提供 JSFiddle 或其他东西,请告诉我该怎么做。)

window.onload = function(){
 var CapsNum = localStorage.getItem("CapsNum");

  if(CapsNum == null) {
   CapsNum = "0";
  } else {
   document.getElementById("caps").value = CapsNum;
}}
window.onbeforeunload = function(){
 localStorage.setItem("CapsNum", document.getElementById("caps").value);
}
function PlusCaps(){
 localStorage.setItem("CapsNum",document.getElementById("caps").value++);
}

function MinusCaps(){
 localStorage.setItem("CapsNum",document.getElementById("caps").value--);
}
<input type="button" id="plus" class="button" value="+" style="margin-left:10px" onclick="MinusCaps()" />
<input type="tel" id="caps" maxlength="3" size="3" min="0" max="999" pattern="[0-9]" value="0" />
<input type="button" id="minus" class="button" value="-" style="margin-right:10px" onclick="PlusCaps()" />

所以看起来您正在更改值并将其保存到本地存储中。这不会更新页面上的值。我通过修改您的示例创建了一个小函数,它可以更新本地存储中的状态并同时更新文本框中的值。

window.onload = function() {
  //var CapsNum = localStorage.getItem("CapsNum");

  if (CapsNum == null) {
    CapsNum = "0";
  } else {
    document.getElementById("caps").value = CapsNum;
  }
}
window.onbeforeunload = function() {
  localStorage.setItem("CapsNum", document.getElementById("caps").value);
}

function PlusCaps() {
 var nextValue = parseInt(document.getElementById("caps").value) + 1;
  setNextValue(nextValue);
}

function MinusCaps() {
 var nextValue = parseInt(document.getElementById("caps").value) - 1;
  setNextValue(nextValue);
}

function setNextValue(nextValue) {
  //localStorage.setItem("CapsNum", nextValue);
  document.getElementById("caps").value = nextValue;
}
<input type="button" id="plus" class="button" value="+" style="margin-left:10px" onclick="PlusCaps()" />
<input type="tel" id="caps" maxlength="3" size="3" min="0" max="999" pattern="[0-9]" value="0" />
<input type="button" id="minus" class="button" value="-" style="margin-right:10px" onclick="MinusCaps()" />