Time of Update: 2017-01-19
比如: 複製代碼 代碼如下: var anchors = document.getElementsByTagName("a"); for (i = 0; i < anchors.length; i++) { var ele=anchors[i];//取某一個元素 //some code here } 上面的代碼錶示擷取文檔中的所有連結元素,然後遍曆做一些事情。
Time of Update: 2017-01-19
真是五個很quick的小提示: 只在<form>元素上使用submit事件 如果要在form中綁定事件處理常式時,應該只在<form>元素上綁定submit事件,而不是給提交按鈕綁定click事件。 March:這個方式固然很好,但是,公司開發時使用了Web Flow,一個頁面就一個大form,而裡面可能有若干個提交按鈕,所以不得不把部分事件處理常式綁定在了提交按鈕的click事件上。 可點擊的都應該是連結
Time of Update: 2017-01-19
JavaScript的重載函數,一般是靠對arguments判斷來操作的。 比如: 複製代碼 代碼如下: var afunc = function() { args = arguments; if(args.length == 1) { console.log(1); }else if(args.length == 2) { console.log(2); }else if (args.length == 3) { console.log(3); } }
Time of Update: 2017-01-19
一、變數的範圍 要理解閉包,首先必須理解Javascript特殊的變數範圍。 變數的範圍無非就是兩種:全域變數和局部變數。 Javascript語言的特殊之處,就在於函數內部可以直接讀取全域變數。 Js代碼 var n=999; function f1(){ alert(n); } f1(); // 999另一方面,在函數外部自然無法讀取函數內的局部變數。 Js代碼 function f1(){ var n=999; } alert(n); //
Time of Update: 2017-01-19
Notify & Capture 要實現 notify 和 capture 就太容易了,我們只需要把 capture 傳入的 handler 都儲存下來,然後在 notify 裡面找到匹配的 handler 就可以了。 複製代碼 代碼如下: var filterHandlerBundles = []; Dispatch.capture = function(pattern, handler) { var filter = createFilter(pattern);
Time of Update: 2017-01-19
至於篩選條件的描述,模式比對是一種很常見也很好用的方式。在 JavaScript 裡面,用 JSON 來描述模式又是相當方便的事情,所以我們來做一個 JSON 模式比對工具吧。 用例設計 作為一個 dispatcher ,我們只需要兩個方法: notify 和 capture 。一個最簡單的用例是這樣的: 複製代碼 代碼如下: Dispatcher.capture({ "status": 200, "command": "message" }, function(json) { /*
Time of Update: 2017-01-19
A 事件流(event flow ) 事件模型分為兩種:冒泡型事件、捕獲型事件。 冒泡型(dubbed bubbling )事件:指事件按照從最精確的對象到最不精確的對象的順序逐一觸發。 捕獲型(event capturing )事件:它與冒泡型事件相反,指事件按照從最不精確的對象到最精確的對象的順序逐一觸發。 捕獲型事件也被稱作自頂向下(DOM層次)的事件模型。 由於IE 瀏覽器不支援捕獲型事件,因此並沒有被廣泛應用。 B 事件監聽 i > 通用監聽方法 樣本一: 複製代碼 代碼如下:
Time of Update: 2017-01-19
在Javascript中,一切都是對象,字串是對象,數組是對象,變數是對象,函數也是對象,所以才會允許['a','b','c'].push('d');這樣的操作存在。類本身也是一個對象,也可以定義屬性和方法: 複製代碼 代碼如下: function Test(){}; Test.str = 'str'; Test.fun = function(){return 'fun';}; var r1 = Test.str; // str var r2 = Test.fun(); // fun var
Time of Update: 2017-01-19
主要就是為了監聽鍵盤按下的是哪個鍵,並且轉成ASCII碼; 複製代碼 代碼如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta
Time of Update: 2017-01-19
A 三位一體的頁面 網頁的結構層(Structure )由HTML 或XHTML 建立; 網頁的表現層(Presentation )由CSS 來建立; 網頁的行為層(Behavior )由Javascript 和DOM 所完成; 其實,網頁的表現層和行為層總是存在的,即使使用者沒有去定義。因為網頁瀏覽器會把自身預設的樣式和事件載入到網頁的結構層上。 B 使用className 屬性 Javascript 還可以通過className 屬性靈活的更改一個標籤元素的CSS
Time of Update: 2017-01-19
今天用alphaimageloader濾鏡的src屬就是其中的主角它將使用絕對或相對url地址指定背景映像。假如忽略此參數,濾鏡將不會作用。複製代碼 代碼如下: <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.3ppt.com
Time of Update: 2017-01-19
javascript 的trim 函數在firefox 下面使用沒有問題<script language="javascript"> var test1 = " aa "; test1 = test1.toString(); test1 = test1.trim(); </script>在Firefox下這樣用沒有問題, 但是在IE下就報錯那麼我們可以修改一下String.prototype.trim=function(){return this.replace(/(^\
Time of Update: 2017-01-19
預載入和JavaScript Image()對象 很多high-res映像真的可以使 Web 網站更加整潔。但是它們也會使網站的訪問速度變慢——映像是檔案,檔案使用頻寬,頻寬直接與等待時間相關。是該瞭解如何通過一個叫做映像預載入(preloading)的技巧來提高 Web 網站的訪問速度的時候了。 映像預載入 對於瀏覽器載入映像來說,只有在對映像發送一個 HTTP請求之後,它們才會被瀏覽器載入,對映像的 HTTP 要求要麼使用 <img> 標記,要麼通過方法調用實現。如果使用
Time of Update: 2017-01-19
建立 var d=new Date(); 要注意的是在JavaScript中月份的值是從0到11(0表示1月)。 設定日期和時間值 設定日期和時間值有兩種方法: 1、只聲明距離1970年1月1日淩晨12點的毫秒數 a、直接用距離1970年1月1日淩晨12點的毫秒數 var d=new Date(0); b、parse方法: parse方法接受字串為參數,把該字串轉換成日期值,返回的是毫秒數。 例如為2012年2月27日建立Date對象: var d=new
Time of Update: 2017-01-19
舉一個例子: [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行] 試一下就知道這段代碼的意思就是聲明一個函數,然後立刻執行,因為Javascript中的變數範圍是基於函數的,所以這樣可以避免變數汙染,但這裡的位元運算符“~”乍一看讓人摸不到頭腦,如果去掉它再運行則會報錯:SyntaxError。 在闡述為什麼之前,讓我們先來明確Javascript中的兩個概念:函式宣告和函數運算式: 先來看看什麼樣的是函式宣告: [Ctrl+A 全選
Time of Update: 2017-01-19
在JavaScript沒有類的定義,建立對象時沒有固定的模板,可以動態建立新的屬性和方法,在動態建立新屬性的時候,我們能做的就是為這個屬性建立新的值,下面一個例子就是建立一個對象並增加x,y兩個屬性。 複製代碼 代碼如下: var Programmer = new Object(); Programmer.name = "Young"; Programmer.age = 25; alert(Programmer.name + " : " + Programmer.age);
Time of Update: 2017-01-19
1:移動圖層 獲得點的x軸y軸座標,從而進行絕對位置(注意:豎拉框會影響 x 軸 y 軸座標值) 複製代碼 代碼如下: var x,y,z,down=false,obj function init(){ obj=event.srcElement //事件觸發對象 obj.setCapture() //設定屬於當前對象的滑鼠捕捉 z=obj.style.zIndex //擷取對象的z軸座標值 //設定對象的z軸座標值為100,確保當前層顯示在最前面 obj.style.zIndex=100
Time of Update: 2017-01-19
今天遇到了這個問題: 複製代碼 代碼如下: //虛擬碼 for (var i=0; i<n; i++) { addEvent(obj[i], "click", func(i)); } 結果出現了問題,所有的dom都被註冊了 i=n 的時候的事件,查了一些資料,說是在迴圈過程過this被改變,註冊過的事件也被隨之改變,找到了一種解決方案; 複製代碼 代碼如下: for (var i=0; i<n; i++) { (function (i){addEvent(obj[i],
Time of Update: 2017-01-19
早上看到《JavaScript 每周導讀》【第三期】一文,裡面發現一篇文章(Extending JavaScript – The Right Way),覺得還不錯,翻譯過來跟大家共用,本文並不是逐字逐句進行翻譯,盡量說得通俗易懂。原文地址:Extending JavaScript – The Right Way以下是譯文 JavaScript已經內建了很多強大的方法,但有時你需要的某個功能在內建的方法中沒有,我們怎麼來優雅地擴充JavaScript功能呢。
Time of Update: 2017-01-19
內建對象 定義:由ECMAScript實現提供的、獨立於宿主環境的所有對象,在ECMAScript程式開始執行時出現。 由定義可知開發人員不必明確執行個體化內建對象,它已被執行個體化了。在ECMAScript-262隻定義了兩個內建對象,即Global和Math Global Global對象是ECMAScript中最特別的對象,因為實際上它根本不存在。 由於在ECMAScript中不存在獨立的對象,所有函數都必須是某個對象的方法,如前面提到的isNaN()、isFinite()