如果該物件(比方div、img、h4)的狀態是被hide起來,並沒有顯示在畫面上
那麼透過JQuery去取得該物件的位置,比方$(this).position().left將會得到0
你一定要先讓物件show()在畫面上,才能去取得或設定他的位置。
我喜歡設計,我喜歡創造,我喜歡美 不論軟體設計,不論介面設計,不論產品規劃設計,我都很有興趣 一直希望能能用這份專長,好好發揮在職場上。讓我做的快樂。 不論寫程式,或是做美工,我都很喜歡,希望我可以有機會雙線。兩種都很擅長。
2013年10月18日 星期五
2013年10月14日 星期一
Javascript的array排序(包含2維array)
JS的array怎麼宣告使用?如下,宣告array時不用告知長度,就要多少用多少。
var MyArray = [];
MyArray[0] = 10;
MyArray[1] = 20;
那二維array怎麼用呢?如下,同樣的概念,要多少用多少,然後告知那個位址是個array就好
var MyArray = [];
MyArray[0] = [];
MyArray[1] = [];
MyArray[0][0] = 10;
MyArray[1][0] = 20;
補充說明JavaScript的Sort:
var MyArray = [];
MyArray[0] = 10;
MyArray[1] = 20;
那二維array怎麼用呢?如下,同樣的概念,要多少用多少,然後告知那個位址是個array就好
var MyArray = [];
MyArray[0] = [];
MyArray[1] = [];
MyArray[0][0] = 10;
MyArray[0][1] = 15;
MyArray[1][1] = 30;
不過二維array有個指定用法,說明如下,一樣是二維array,但是,用的是指定該column的名稱的方式,這樣在後續使用的時候,可以不用記得是第幾維,只要指定正確的column名稱就好了。
var MyArray = [];
MyArray[0] = [];
MyArray[1] = [];
MyArray[0]["id"] = 10;
MyArray[1]["Email"] = 20;
MyArray[0] = [];
MyArray[1] = [];
MyArray[0]["id"] = 10;
MyArray[0]["id"] = 15;
MyArray[1]["Email"] = 30;
準備工作完成,瞭解JS的array使用方式之後,來看看排序吧
一維array很簡單,就呼叫MyArray .sort(),就這樣(如果想瞭解工作的原理,請看本文最下方的補充。)MyArray就會變成排序完成的Array(所以如果要保留原本的Array,請利用 var SourceMyArray = MyArray.slice(0);這個函式)
二維就比較複雜一些。要告訴sort()函式,我要用哪一維來排序,方法為何。這個寫法上就是:
MyArray.sort( function(a,b)
{
return a["id"].toUpperCase() < b["id"].toUpperCase() ? -1 : ( a["id"].toUpperCase() > b["id"].toUpperCase() ? 1 : 0 );
//return a["id"].toUpperCase() > b["id"].toUpperCase(); 錯誤的寫法,漏掉了等於的情況
});
大概的意思就是告訴排序函式幫我用id這個欄位幫我做排序,排序方法則是拿兩者比大小,並根據結果傳回-1或1或0。其中有個有趣的發現,當你用了上面我註解掉的那一行的錯誤的寫法,在10筆資料內的排序都會正確,一旦超過10筆,就會排序錯誤,為什麼?還真研究不出來,日後若有人知道原因,煩請告訴我喔。
這個範例程式放在這裡
可以自行貼到http://jsfiddle.net/或者是http://htmledit.squarefree.com/來做測試喔
補充說明JavaScript的Sort:
sort
在適當的位置排序陣列的元素。
var a = ['Wind', 'Rain', 'Fire']; a.sort(); print(a); // Fire,Rain,Wind
sort
也可以接受 Callback 函數來決定如何排序陣列的內容。這個函數會對兩個值做比較,並返回下列三個值其中之一︰- 如果 a 在排序系統中小於 b,返回 -1(或任意的負數)
- 如果 a 在排序系統中大於 b,返回 1(或任意的正數)
- 如果 a 和 b 被認為是相等的,返回 0。
例如,下面的例子會以字串的最後一個字母來排序︰
var a = ['Wind', 'Rain', 'Fire']; function sortFn(a, b) { var lastA = a[a.length - 1]; var lastB = b[b.length - 1]; if (lastA < lastB) return -1; if (lastA > lastB) return 1; if (lastA == lastB) return 0; } a.sort(sortFn); print(a); // Wind,Fire,Rain
訂閱:
文章 (Atom)