顯示具有 Javascript 標籤的文章。 顯示所有文章
顯示具有 Javascript 標籤的文章。 顯示所有文章

2016年7月17日 星期日

Javascript 我真搞不懂你啊

今天突然被指派了一項工作,要用 Javascript 寫一個 Sample code,其中有一項功能要用到時間函數;簡單的看了一下 W3C School ,挑了我適合的建構式來用:
new Date(year, month, day, hours, minutes, seconds, milliseconds)
習慣寫 C# 的我,很直覺地認為建構式的參數和 C# 一樣,but 人生最厲害的就是這個 but,就因為這個建構式,花了我好幾個小時的時間才找到錯誤,看來偵錯的能力還有待加強。

日期函數中的月份是從 0 到 11,就因為沒有注意到這一點,所以當我把他像 C# 一樣使用的時候,我拿到物件的日期總是多加了一個月,但是我又把此物件轉成 Timesamp (Unix epoch time),所以就一直沒有注意到產生的時間錯了,下次看 W3C School 的時候,要特別注意下方黃色的說明。

日期類別注意事項:

  • JavaScript dates are calculated in milliseconds from 01 January, 1970 00:00:00 Universal Time (UTC).
  • JavaScript counts months from 0 to 11. January is 0. December is 11.
  • When setting a date, without specifying the time zone, JavaScript will use the browser's time zone.
  • When getting a date, without specifying the time zone, the result is converted to the browser's time zone.
另外,常用到的建構式 new Date(dateString) 其 dateString 格式為: "2015-03-25T12:00:00",字串中 T 代表的是 UTC 時間;然而此時間透過 toString() 方法得到的文字會依照瀏覽器的時區來表示時間,例如: new Date("2015-03-25T12:00:00").toString() 在我的瀏覽器 (GMT+8) 會得到以下字串: 
Wed Mar 25 2015 20:00:00 GMT+0800 (台北標準時間)

2010年11月2日 星期二

Javascript href onclick

在超連結(anchor)上,要寫click事件有兩種寫法:

  1. <a href="#" onclick="foo()">onclick</a>
  2. <a href="javascript:foo()">href</a>

在大陸的網站上 ref. 1 看到,IE4無法使用onclick。於是,他辛苦地寫了一段script讓onclick可以在IE4上執行。還好在現在這個時代,沒什麼人用IE4了,IE4管他去死吧! 那麼這兩種寫法還有什麼不同呢?

我google了一下,中文的網頁並不多,只好看英文的。剛好有一篇 ref. 2 就在講這個,但是看完了還是霧煞煞。在我實驗後發現,當function有傳入this參數時,在function中所得到的object是不同的。onclick="foo(this)"傳入的this參數是HTMLAnchorElement,而javascript:foo(this) 傳入的參數是window。再看到ref 2中,才明白他的意思。@@

另外,在找資料的過程中看到,在anchor的onclick event中回傳false,可以讓href不執行。如果href="#",則會執行完function後,將網頁導到自己,因此焦點 (focus) 也會跟著改變。換句話說,若不想網頁重導 (改變焦點),單純只要執行function話,回傳值設為false,就OK了。