2014-11-02 34 views
0

改变我创建了一个功能,让当前UTC日期和时间:如何从变量存储静态值保持在Javascript

get_current_UTCDate: function() { 
      var d = new Date(); 
      return d.getUTCFullYear() +"-"+ (d.getUTCMonth()+1) +"-"+d.getUTCDate()+" "+_.str.sprintf("%02d", d.getUTCHours())+":"+_.str.sprintf("%02d", d.getUTCMinutes())+":"+_.str.sprintf("%02d", d.getUTCSeconds()); 

已叫成另一个功能:

on_timer: function(e) { 
      var self = this; 
      if ($(e.target).hasClass("pt_timer_start")) { 
       current_date = this.get_current_UTCDate();  
       this.set_current_timer_activity({date: current_date}); 
       this.start_interval(); 
       } 

这个on_timer函数被调用到切换按钮中。

this.$el.find(".pt_timer_button button").on("click", this.on_timer); 

问题:

在每次当我按下从CURRENT_DATE启动按钮,它需要新的价值的时间。 而且我的情况是,如果第一次按下按钮,而不是从current_date取得FRESH值,并且如果刷新页面并再次按下按钮,那么它应该取第一个值。 (它不应该采取另一个新的价值)。

那么有什么办法可以将current_date的第一个值存储到另一个变量X中,并让它保持静态。或者我可以使用cookies?

在此先感谢。

+0

看一看['localStorage'](https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Storage) – Emissary 2014-11-02 16:19:35

+0

你可以把整个JS代码?否则,我们无法了解您使用“this”的想法。您可以为此创建一个jsfiddle .. – 2014-11-02 16:19:59

+0

我在此处共享的大部分相关代码:http://www.codeshare.io/UupFC @plbsam – BomberMan 2014-11-02 16:32:59

回答

1

此代码演示你需要(我只用你的代码的一部分)的基本功能...

<html> 
    <head> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
    <script type="text/javascript"> 

    obj = { 
     get_current_UTCDate: function() { 
     var d = new Date(); 
     return d.getUTCFullYear() +"-"+ (d.getUTCMonth()+1) +"-"+d.getUTCDate()+" "+ d.getUTCHours()+":"+ d.getUTCMinutes()+":"+ d.getUTCSeconds(); 
     }, 

     on_timer: function() { 
     if (localStorage.getItem("curdate") == null) { 
      localStorage.setItem("curdate",obj.get_current_UTCDate()); 
      alert('first time'); 
     } 
     alert(localStorage.getItem("curdate")); 
     } 
    } 

    $(document).ready(function(){ 
     $('button').on("click", obj.on_timer); 
    }); 
    </script> 
    </head> 
    <body> 
    <button>click</button> 
    </body> 
</html> 
+0

我感谢您的回应...让它尝试!谢谢 – BomberMan 2014-11-02 17:18:01

1

不知道所有的要求,我会考虑使用一个cookie来存储值。既然你已经使用jQuery,你可以使用$ .cookie插件,或只使用基本的set/get例程,如:

function cookies() { 
    return document.cookie.split('; ').reduce(function(acc, v) { 
     p = v.split('='); acc[p[0]] = p[1]; return acc; 
    }, {}); 
} 

function getCookie(key) { 
    return cookies()[key]; 
} 

function setCookie(key, value) { 
    return document.cookie = [key, '=', value, ';'].join(''); 
} 

然后在你的代码是这样的:

if ($(e.target).hasClass("pt_timer_start")) { 
    if (saved_date = getCookie('current_date')) { 
     current_date = saved_date; 
    } else { 
     current_date = this.get_current_UTCDate(); 
     setCookie('current_date', current_date); 
    }  
    this.set_current_timer_activity({date: current_date}); 
    this.start_interval(); 
} 
+0

我感谢您的回应...让它尝试!谢谢 – BomberMan 2014-11-02 17:24:57

相关问题