【问题标题】:Random number generator javascript. How can I prevent it generating a new number on refresh?随机数生成器javascript。如何防止它在刷新时生成新数字?
【发布时间】:2014-02-07 19:26:01
【问题描述】:

好的,我得到了这个代码:

<font face="Arial" size="2">Your random number:</font></b><br></br>
<span class="xr_tl Normal_text" style=" top: 0px;
                                        font-family:Impact;
                                        font-size:20px;
                                        color:#c04e51;">
    <script type="text/javascript">
        document.write(Math.floor(Math.random()*999999));
    </script>
</span>

当您访问该页面时它会生成一个随机数并且工作正常,但我需要它只生成一次随机数。这意味着当您单击刷新时,不会生成新的随机数,而之前生成的随机数会保留在那里。我怎样才能做到这一点?我认为可以通过发送 cookie 来完成,但我无法弄清楚。

【问题讨论】:

  • write() 改为:localStorage.rnd || (localStorage.rnd=Math.floor(Math.random()*999999))
  • 你不知道cookies? w3schools.com/js/js_cookies.asp
  • 你为什么要这样做呢?因为最终你会为用户生成相同的数字。
  • @Logan w3fools.com
  • @bjb568 我很清楚 w3schools 不是最重要的资源,但它是一个起点,不会使所提供网页中的代码无效。

标签: javascript html random refresh generator


【解决方案1】:
var num = localStorage.getItem('num') || Math.floor(Math.random()*999999);
localStorage.setItem('num',num);
document.write(num);

把它贴在localStorage

【讨论】:

    【解决方案2】:

    您必须将该号码存储在某处然后使用它。例如在 cookie 中。以下是一些设置、获取和取消设置 cookie 的函数。我认为使用 cookie 比 localstorage 更好,因为您可以选择它们的有效期。

    function createCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function readCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function eraseCookie(name) {
        createCookie(name,"",-1);
    }
    

    【讨论】:

    • 这个答案没有多大帮助。
    • 这应该是一条评论。
    • Cookie 还会降低您的网站速度,并将其值留在日志中。
    【解决方案3】:

    您可以使用 localStorage API 来存储页面关闭或刷新后将保留的信息。

    var res = localStorage.getItem('randomNumber');
    if(res == null){
        res  = Math.floor(Math.random()*999999)
        localStorage.setItem('randomNumber', res);
    }
    
    document.write(res);
    

    Demo

    【讨论】:

      猜你喜欢
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2017-06-14
      • 1970-01-01
      • 2018-05-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多