【问题标题】:Incrementing value by 1 each time the form loads/submitted每次表单加载/提交时将值增加 1
【发布时间】:2017-01-24 17:49:59
【问题描述】:

这是我在 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?)

【问题讨论】:

    标签: javascript html increment onload onsubmit


    【解决方案1】:

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

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

    document.cookie = "counter=0";
    

    【讨论】:

    • 你能帮我写我不熟悉的代码吗
    • @KasunSampath 在实施一项技术以公开先前的订单号 + 1 之前,请考虑其含义。看看我的回答。
    【解决方案2】:

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

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

    【讨论】:

    • 非常感谢它的工作原理,所以现在我如何将函数生成的值传递给 php 变量?
    • 对不起。我是Java开发人员。但是这个链接可能会对你有所帮助。 stackoverflow.com/questions/8191124/…
    【解决方案3】:

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

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

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

    【讨论】:

    • 感谢您的建议
    • 如何从数据库中检索?
    【解决方案4】:

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

    【讨论】:

    • 你能帮我写我不熟悉的代码吗
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    相关资源
    最近更新 更多