每次表单 loads/submitted 时值增加 1

Incrementing value by 1 each time the form loads/submitted

这是我的 html 代码,用于在 html 标签中显示一个值

<table  >
                <tr><td height="40" colspan="2" align=right>
                    <div class="headbox" >Order No.</div></td>
                    <td align=left> <div class="headbox"  ><label id=no > </label></div> </td>

                </tr>

这些是 javascript 函数,用于在加载表单时在标签中显示数字

function noDisplay(){
   var value =1


    document.getElementById('no').innerHTML = value;

}

window.onload = function(){
    noDisplay()
}; 

虽然我想在每次加载表单时将数字的值增加 1,但它仍然保持为 1!我该如何纠正这个问题(即 在提交或再次加载表单时将值增加到 2?)

您可以为此使用 cookie。从 cookie 中读取值,如果存在则加 1,否则显示 1。 可以在 http://www.w3schools.com/js/js_cookies.asp

找到一个简单的例子

一个工作示例:https://jsfiddle.net/amf3bygk/1/为默认值创建一个计数器=0。

document.cookie = "counter=0";

问题是重新加载页面时变量(值)总是初始化为 0。您需要将变量保存在某个地方,并在重新加载页面时用它的旧值对其进行初始化。如果您只想让它为一个用户工作,您可以为此使用 cookies(http://www.w3schools.com/js/js_cookies.asp),或者如果您想让它为多个并行用户工作,您可以将它保存在服务器端的文档或数据库中。

一般来说,在保存之前公开订单号是个坏主意,原因有很多:

  • 如果两个浏览器同时加载新的订单页面会怎样?他们显示相同的数字?或者他们显示两个不同的数字?
  • 如果它们显示相同的数字,当它们都尝试保存数据时会发生什么情况?第二个被异常阻止或者第二个用不同的数字保存?
  • 如果它们显示不同的数字,当第一个浏览器没有保存数据时会发生什么?您的订单号有漏洞吗?
  • 如果他们保存数据但首先是第二个浏览器然后是第一个浏览器怎么办?您的订单号确实反映了广告订单。

出于这些原因,最好不要在订单号上公开任何内容,并且 return 只有在数据真正保存在数据库中时才公开该号码。相反,如果您处于更新表单中,则可以轻松公开已保存在数据库中的数据。

您也可以使用 localStorage 变量来保存值。

    function noDisplay(){

    var count = localStorage.getItem("count")==null?1:localStorage.getItem("count");
    count=Number(count)+1;
    localStorage.setItem("count", count);
    document.getElementById('no').innerHTML = count;
  }

这是为了更新标签以仅显示表单加载了多少次。如果您需要订单号,那么您只需要从服务器传递订单号。