每次加载/提交表单时,将值增加1

时间:2016-09-16 13:17:52

标签: javascript html increment onload onsubmit

这是我在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!我怎样才能纠正这个问题(即enter image description here在提交或再次加载表单时将值增加到2?)

4 个答案:

答案 0 :(得分:1)

问题是当重新加载页面时,变量(值)总是被初始化为0。您需要保存变量somwhere并在重新加载页面时使用旧值初始化它。如果你只想让它适用于一个用户,你可以使用cookie(http://www.w3schools.com/js/js_cookies.asp),或者你可以将它作为服务器保存在文档或数据库中,如果你想让它适用于多个并行用户。 / p>

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

您还可以使用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;
  }

这是更新标签以显示仅加载表单的次数。如果您需要订单号,则只需从服务器传递订单号。

答案 3 :(得分:0)

你可以使用cookies。从cookie中读取值(如果存在)并递增1,否则显示1。 一个简单的例子可以在http://www.w3schools.com/js/js_cookies.asp

找到

一个工作示例:https://jsfiddle.net/amf3bygk/1/默认情况下创建一个counter = 0。

document.cookie = "counter=0";