Time of Update: 2013-10-17
方法調用模式 當一個函數被儲存為對象的一個屬性時,我們稱之它為該對象的一個方法,那麼this被綁定到該對象上。 複製代碼 代碼如下: var myObject={ name : "myObject" , value : 0 , increment : function(num){ this.value += typeof(num) === 'number' ? num : 0; } , toString : function(){ return '[Object:'+this.name+'
Time of Update: 2013-10-17
用過Prototype的人都知道,裡面有個類叫做Template,用法樣本如下: 複製代碼 代碼如下: var str = '#{what} may have gone, but there is a time of #{how}'; var object = { what : 'Swallows', how : 'return' } var template_1 = new Template(str); var result = template_1.evaluate(object);
Time of Update: 2013-10-17
其實通俗的講類就是對象的模板,為了增強JS的OO特性,受mootoos架構啟發我們可以使用一個JSON對象來描述這個對象的模板。在這個模板中我們可以類比實現私人成員,受保護的成員,靜態成員。 這是一個在JS中類比的類定義文法,代碼中Class是一個自訂函數,它接受兩個參數,第一個參數是類名、第二個參數是一個JSON用來一個對象的模板。在這個JSON對象中其中欄位 "extend",,"initialize","static"
Time of Update: 2013-10-17
解決思路如下: 首先,判斷事件的當前節點,也就是jquery的currentTarget是否在target的包含中,即下面的擴充$.containsNode。 然後,在調用hover的時候的mouseover和mouseout事件裡判斷currentTarget是否在target的包含中,即$.fn.fhover擴充 下面就是相關代碼: 複製代碼 代碼如下: $.containsNode = function(parentNode, childNode) { if
Time of Update: 2013-10-17
網上可以搜到的大部分都是說使用createDocumentFragment主要是因為避免因createElement多次添加到document.body引起的效率問題,比如: 複製代碼 代碼如下: var arrText=["1","2","3","4","5","6","7","8","9","10"]; for(var i=0;i<arrText.length;i++){ var op=document.createElement("P"); var
Time of Update: 2013-10-17
唯一需要注意的地方: innerText與textContent,顯示頁面的時候不能用innerHTML,否則會被解析。innerText與textContent是在除FF之外的瀏覽器與FF之間的差異。 複製代碼 代碼如下: var innerText = document.body.innerText ? 'innerText' : 'textContent'; 上面的語句在開頭處理以避免多次判斷 demo貼圖: demo: 複製代碼 代碼如下: <!DOCTYPE html
Time of Update: 2013-10-17
l ECMAScript,有ECMA-262定義,明確javascript這門語言的規則和約定,好比為開始一場遊戲指定的遊戲規則、規範、約定。 l DOM:提供訪問和操作網頁內容的方法和介面 l BOM,提供與瀏覽器互動的方法和介面 ECMA-262規定了以下內容: l 文法 l 類型 l 關鍵字 l 保留字 l 操作符 l 對象 ECMAScript是對該標準規定的各方面內容的程式設計語言描述,javascript實現了ECMAScript指定內容並進行了擴充。
Time of Update: 2013-10-17
在編寫處理xml的網頁時,經常為瀏覽器安全色性頭疼。於是我將常用的xml操作封裝為函數。經過一段時間的改進,現在已經很穩定了,用起來很舒服。 函數有—— xml_loadFile:xml同步/非同步載入。 xml_transformNode:xsl轉換。 xml_text:節點的文本。 selectSingleNode:根據XPath選擇單個節點。 selectNodes:根據XPath選擇多個節點。 全部代碼(zyllibjs_xml.js)—— 複製代碼 代碼如下: /*
Time of Update: 2013-10-17
商品資訊使用JSON資料來類比 同一個產品點擊多次,不會重複添加,而是在已有的基礎上數量+1, 商品數量也可以手動輸入,當輸入0時,該商品將自動從購物車刪除(點擊減號到小於1時,也會提示是否從購物車刪除商品資訊) 每個產品的價格和總價都會根據添加和刪除的操作來動態計算 附下載連結:/201112/yuanma/jquery_gouwuche.rar基本的功能都已經實現, 建議使用IE瀏覽器運行,其他瀏覽器沒有測試 HTML代碼: 複製代碼 代碼如下: <!DOCTYPE html
Time of Update: 2013-10-17
5. 非同步隊列 Deferred 5.1 概述 非同步隊列是一個鏈式對象,增強對回呼函數的管理和調用,用於處理非同步任務。 非同步隊列有三種狀態:初始化(unresolved),成功(resolved),失敗(rejected)。 執行哪些回呼函數依賴於狀態。 狀態變為成功(resolved)或失敗(rejected)後,將保持不變。 回呼函數的綁定可以是同步,也可以是非同步,即可以在任何時候綁定。 (本節中的 綁定 註冊 增加 具有相同的含義) 5.2 關鍵方法 先看看jQuery.
Time of Update: 2013-10-17
複製代碼 代碼如下: (function ($) { var PageFunc = function PageFunc() { } $.PageFunc = function (Total, PageSize, curPageNum, FunUrl) { if (PageSize == "" || PageSize == null || PageSize == undefined) { PageSize = 10; } if (curPageNum == "" || curPageNum ==
Time of Update: 2013-10-17
複製代碼 代碼如下: function GetDIVORPIV(DIV) { var str; var arrayDIV=new Array(); if(DIV.indexOf("_")>0) { arrayDIV=DIV.split("_"); str=arrayDIV[1]; } else { str=""; } return str; } function GetDIVandPIV(DIVPIV) { var strDIVandPIV; var strDIVPIV=DIVPIV;
Time of Update: 2013-10-17
當時我在分享會,想試試,但身邊沒有電腦。今天開啟 Firebug 的那一瞬間,突然記起這事。馬上試了一下之前想的一個方案。可以!代碼如下: 複製代碼 代碼如下: function a(){ var arr = Array(arguments); alert(arr instanceof Array); } a('b'); 在看 Baidu Tangram 的時候,最常看到的是 String('a string'),不像其實地方的用法,是使用與一個Null 字元串字面量相加來強制類型轉換。當時,
Time of Update: 2013-10-17
剛好上次有同學提出疑問。剛好可以自測一下。先來看看老道在《JavaScript 精粹》P33 寫的吧。他對 String 對象擴充了一個 trim() 方法: 複製代碼 代碼如下: Function.prototype.method = function(name, func) { this.prototype[name] = func; return this; }; String.method('trim', function() { return
Time of Update: 2013-10-17
原始的代碼: 複製代碼 代碼如下: //將文字轉換為16進位 function textToSix(str) { return escape(str).replace(/%/g, function () { return "\\"; }).toLowerCase(); } 改進後的: 複製代碼 代碼如下: //將文字轉換為16進位 function textToHex(str) {
Time of Update: 2013-10-17
:jQuery news ticker是一個非常方便的jQuery外掛程式,能夠快速讓你產生這樣的一個新聞行情效果。 它能夠通過列表,HTML甚至是RSS(只能載入本站的RSS feed)來產生新聞內容,並且支援前後播放和停止。這個外掛程式支援一系列的自訂選項,例如: 播放速度 播放效果 播放方向 顯示時間 代碼開發簡單高效。 首先引入jQuery news ticker類庫及其jQuery類庫: 複製代碼 代碼如下: <link href="css/ticker-style.css"
Time of Update: 2013-10-17
如我們要在www.jb51.net下使用一個cookie的話 ,只要在這個站下面的檔案中設定一個cookie就行了 但是如果我們要想實現在頂層網域下設定的cookie,同時要在次層網域下使用的話那麼該怎麼做呢?比如這樣的情況:我們在頂層網域是個網站如:www.jb51.net,他的下面有個次層網域如:bbs.jb51.net 我們要想實現在頂層網域上登入後,保留這個cookie到次層網域上,也就是說,實現同步登入的效果, 那麼我們該怎麼設定這個cookie??其實很簡單。 就拿剛剛那個網域名稱(
Time of Update: 2013-10-17
複製代碼 代碼如下: Date.prototype.format = function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.getSeconds(), //second "q+" :
Time of Update: 2013-10-16
HTML代碼: 複製代碼 代碼如下: <div class="float" id="float"> 我是個靦腆羞澀的浮動層... </div> JS代碼: 複製代碼 代碼如下: $.fn.smartFloat = function() { var position = function(element) { var top = element.position().top, pos = element.css("position"); $(window).scroll(
Time of Update: 2013-10-16
昨天在用JS對前台浮點數進行合算時發現: 0.05+1.08=1.1300000000000001 上網查一查的確存在這種Bug,除了位元上控制之外也沒什麼也好的方法(希望高手能提出 其它思路)。 於是自己編寫一個控制小數位元的JS方法,解決開發燃眉之急 複製代碼 代碼如下: //小數位元控制,可以四捨五入 function Fractional(n) { //小數保留位元 var bit = 2; //加上小數點後要擴充1位 bit++; //數字轉為字串 n =