2012-02-25 47 views
1

我試圖通過javascript寫一個cookie,過期時間爲30分鐘。我遵循堆棧和其他網站上的許多線程,並且我有一個我認爲應該可以工作的代碼,但該cookie不會寫入。Javascript寫一個有效期過期的cookie

<script> 
    var date = new Date(); 
    date.setTime(date.getTime()+(30*60*1000)); 
    var expires = date.toGMTString(); 
    var offset= -d.getTimezoneOffset()/60; 
    document.cookie = 'timezone='+offset+';expires='+expires+';path=/'; 
</script> 

任何想法,爲什麼這不工作?最奇怪的是,我早先寫過cookie,但我無法讓到期時間正常工作,現在我無法完成它!我幾乎可以肯定,我將我的代碼改回原來的工作狀態(沒有到期時間),但現在我根本無法得到它。

任何想法?

+0

什麼是'-d.getTimezoneOffset()'? – 2012-02-25 22:43:05

+0

^這是與GMT的偏移量,這是一個用於設置用戶時區的腳本,當cookie實際上正在寫入時,該時區一直在正常工作。 – JimmyBanks 2012-02-25 22:43:32

+1

請參閱:http://jsfiddle.net/hsmPY/2/ – 2012-02-25 22:44:04

回答

2

你似乎在這裏使用一個沒有被定義一些d變量,你得到一個JavaScript錯誤(你在你的JavaScript控制檯看的方式?):

var offset= -d.getTimezoneOffset()/60; 

你大概的意思是:

var offset= -date.getTimezoneOffset()/60; 

作爲您的變量被稱爲date

+0

[d未定義](http://jsfiddle.net/hsmPY/1/)。 – 2012-02-25 22:45:30

+0

演示:http://jsfiddle.net/hsmPY/2/ – 2012-02-25 22:46:58

+0

@JaredFarrish,是的,這正是我在回答中所說的。 – 2012-02-25 22:47:45

2

試試這個:

<script> 
    var date = new Date(); 
    date.setTime(date.getTime()+(30*60*1000)); 
    var expires = date.toGMTString(); 
    var offset= -date.getTimezoneOffset()/60; 
    document.cookie = 'timezone='+offset+';expires='+expires+';path=/'; 
</script>