Category Archives: Javascript

Cannot read property ‘mtime’ of undefined – Jasmine

終於開始做 Unit Testing
但是不知道為什麼在自己電腦上Run Unit Test 出現以下的錯誤信息

Running “connect:test” (connect) task
Started connect web server on http://localhost:9001

Running “karma:unit” (karma) task
Warning: Cannot read property ‘mtime’ of undefined Use –force to continue.

Aborted due to warnings.

mtime of undefined

最後發現原因可能是 Windows 10 使用 mklink  symbolic link 來reference 資料夾/ 檔案的問題
或是可以bower package version mismatch的問題
解決方法 就是在Windows上使用傳統的方法
copy and paste 來複製在Unit Test用到的檔案到要用的資料夾內

之後再進行Unit test 便可以解決這個問題了

Hope you find it useful

How to delete field inside Json Object – 如何把Json 的屬性移除

今日在公司經過同事Code Review…我學會了很多東西
其中一個就是如何delete Json/ Javascript Object 內的一些Field

e.g.

var params = {
        UserId: membership.id,
        FirstName: membership.firstName,
        ScreenName: membership.nickname,
        location: membership.currentLocation
      };

假設只有某些權限的用戶才可以看到 location這個field的

我們可以使用 delete keyword 來把Json / Javascript object的 field 移除
e.g.

delete params.location;
console.log(params);

Hope you find it useful

‘const’ is available in ES6 (use ‘esversion: 6’) or Mozilla JS extensions (use moz). JSHints JSCS

搭飛機訓唔著係一件十分痛苦的事..
幸好..可以給我一些時間去tidy up自己之前hackathon 的Code
但在執行gulp 的JSCS 時出現以下的Warning.

‘const’ is available in ES6 (use ‘esversion: 6’) or Mozilla JS extensions (use moz).
'const' is available in ES6 (use 'esversion: 6') or Mozilla JS extensions (use moz)

在機上不能上網..今天終於有時間去research下怎樣解決

解決方法十分簡單..
只要在 .js 檔案的上方 加入下comment便可以不再顯示這些Warning
jshints esversion 6 issue fixed

/*jshint esversion: 6 */

Hope you find it useful

Javascript get Current Date without time – 如何在Javascript上找出現在的日子.. 不要時間

今天又為自己寫下一些筆記..
很多時候都需要為網頁的一些 Form 或其他功能去埴上今天/現時日期..
很多時候的default/預計功能都會自動加上時間..
有時就是因為這些 時間令到一些功能有錯誤..
E.G. 例如你想比較兩個日子

解決方法十分簡單
我們可使用 new Date().toJSON() 來 輸出
2015-08-21T14:46:06.729Z
之後用slice(0,10) 取出 日期的字串
之後我們便可以用new Date()來把這個日子轉為javascript的 日子object 以方便之後處理

Console.log(new Date().toJSON());
// result: "2015-08-21T14:46:06.729Z"

Javascript new Data().toJSON() result

console.log(new Date().toJSON().slice(0,10));
// 2015-08-24

把他轉為一個DateObject

var currentDate = new Date().toJSON().slice(0,10)
// result "2015-08-21"
Console.log(currentDate);

Convert Date String to Javascript Date Object

Hope you find it useful

Check if Bootstrap is loaded – 檢查Bootstrap 是否已經安裝

在嘗試使用Bootstrap的時候
又不知道自己的網頁上是成功地Load了 Bootstrap
大家可以嘗試使用以下的方法

檢查網頁上有沒有 $.fn.modal這個function
如果是執行 alert(typeof ($.fn.modal)) 時 他的結果是”undefinedBootstrap Library 應該是沒有安裝好

E.G.

<script src="//netdna.bootstrapcdn.com/bootstrap/3.0.3/js/bootstrap.min.js"></script>

<script type="text/javascript">
    if (typeof ($.fn.modal) == "function") {
        alert("Bootstrap loaded");
    } else {
    alert("Bootstrap not loaded");
    }
    // return "undefined" - if bootstrap is not loaded
    // return "function" - if bootstrap is loaded
    alert(typeof ($.fn.modal));
</script>

Hope you find it useful

Javascript Concat Number as string rather than add them up – Javascript 當把數字加上時卻把數字連在一起

今天在公司其中一Project上使用Javascript來計算時出現了一個問題
測試的同事問..為什麼數是會多了一個 0
像是計算時有些問題..
叫我去看看..
我看了自己的程式碼好幾次..
最後要慢慢一步一步來Debug才找到出現問題的地方

問題頁來出現在Javascript 處理數字上
E.G.

var i = $("#txt_Input1").val(); //100
var j = $("#txt_Input2").val(); //0
alert(i+j);

結果卻變成了 1000

問題是因為當 javascript 讀取TextBox的資料的時候
當了他們是文字.. 而Javascript上的”+” 可以代表是 Concat 字串..
所以便把 0 加上了100 上變成了1000 了

解決方法:
我們可以使用 parseInt 或 parseFloat 來把字轉成數值
之後便可以正常地把 100 加上0 變成100 了

E.G.

var i = $("#txt_Input1").val(); //100
var j = $("#txt_Input2").val(); //0
alert(parseFloat(i)+parseFloat(j));

Hope you find it useful

.Net ” is not a valid JSON primitive. This error can also occur when extraneous data is present after the JSON data.

今日又再開始接觸 Silverlight Application
最近學會了用PHP Codeigniter RESTFul Framework
可以很簡單地建立一個RESTFul Services

但當我嘗試到deserialize json 的時候..
我出現了以下的問題
” is not a valid JSON primitive. This error can also occur when extraneous data is present after the JSON data.

最後發現原來自己的RESTFul Output 是一個 XML 的Output…
所以便出現了這個問題了

如果大家有相同的問題時
可以查看JSON 的 結果是不是 正確的..
可能JSON 你想接收到的不是一個正確的JSON =P

Hope you find it useful