2014-11-02 70 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