Time of Update: 2017-01-19
ps:LZ覺得這個標題有點大了,超出了能力範圍,不喜勿碰。目前只記錄LZ能力範圍內的,日後持續補充。一、JQuery對象和DOM對象的相互轉化(《鋒利的JQuery》) JQuery轉化為DOM: 1、var jq = $(‘#selector'); var dom =
Time of Update: 2017-01-19
第十四章 錯誤處理與調試 1.開啟瀏覽器錯誤報表 1.1 Internet Explorer □Toos → Internet Option → Anvanced → Display a notification about every script error 1.2 Firefox □Tools → Error Console (Firebug) 1.3 Safari □Edit → Preferences → Advanced → Show develop menu in menubar/
Time of Update: 2017-01-19
一、變數 在javascript變數中可以存放兩種類型的值:原始值和引用值。 原始值儲存在棧上的簡單欄位,也就是值直接儲存在變數所標示的位置內。 引用值儲存在堆內的對象,棧內變數儲存的是指向堆內對象的指標值。 在javascript中有5種基本類型:Undefined,Null,Boolean,Number,String。 參考型別其實就是對象,類似其他語言中類執行個體的概念。 複製代碼 代碼如下: var b = true; // 儲存在棧上 var num = 20; //儲存在棧上
Time of Update: 2017-01-19
比如說,我們想要一個遞迴函式來計算 Fibonacci 數列。一個 Fibonacci 數字是之前兩個 Fibonacci 數字之和。最前面的兩個數字是 0 和 1。 複製代碼 代碼如下: var fibonacci = function (n) { return n < 2 ? n : fibonacci(n - 1) + fibonacci(n - 2); }; for (var i = 0; i <= 10; i += 1) { document.writeln('// ' +
Time of Update: 2017-01-19
複製代碼 代碼如下: /** * 複製元素樣式 * @param {HTMLElement} 被複製的元素 * @param {Boolean} 是否啟用緩衝(預設true) * @return {String} css類名 */ var cloneStyle = (function (doc) { var rstyle = /^(number|string)$/, cloneName = '${cloneName}', sData = {}, addHeadStyle = function (
Time of Update: 2017-01-19
越來越覺得國內沒有教書育人的氛圍,為了弄懂JS的閉包,我使出了我英語四級吃奶的勁去google上搜尋著有關閉包的解釋,當我看到stackoverflow上這一篇解答,我腦中就出現了一句話:就是這貨沒跑了! 不才譯文見下,見笑了。 Peter Mortensen問: 就像老Albert所說的,“如果你不能向一個六歲的孩子解釋清楚,那麼其實你自己根本就沒弄懂。”好吧,我試著向一個27歲的朋友就是JS閉包(JavaScript closure)卻徹底失敗了。
Time of Update: 2017-01-19
範圍是JavaScript最重要的概念之一,想要學好JavaScript就需要理解JavaScript範圍和範圍鏈的工作原理。今天這篇文章對JavaScript範圍和範圍鏈作簡單的介紹,希望能協助大家更好的學習JavaScript。 JavaScript範圍 任何程式設計語言都有範圍的概念,簡單的說,範圍就是變數與函數的可存取範圍,即範圍控制著變數與函數的可見度和生命週期。在JavaScript中,變數的範圍有全域範圍和局部範圍兩種。 1. 全域範圍(Global Scope)
Time of Update: 2017-01-19
長久以來JavaScript相容性一直是Web開發人員的一個主要問題。在正式規範、事實標準以及各種實現之間的存在的差異讓許多開發人員日夜煎熬。為此,主要從以下幾方面差異總結IE和Firefox的Javascript相容性: 一、函數和方法差異; 二、樣式訪問和設定; 三、DOM方法及對象引用; 四、事件處理; 五、其他差異的相容處理。 一、函數和方法差異 1. getYear()方法 【分析說明】先看一下以下代碼: 複製代碼 代碼如下: var year= new Date(
Time of Update: 2017-01-19
不加的話貌似只在ie6出現過問題。出現過:改變圖片地址,結果圖片不見了,載入樣式,但樣式檔案沒了。就像是中斷了資源的下載一樣,正確時解釋是 IE6下使用A元素來做按鈕的時候一定要記得在onclick事件裡面調用preventDefault(),IE6會強制關閉當前活動的HTTP串連,導致正在請求的其他資源或指令碼載入不正常。 但資源如果已經被緩衝了,就沒有這個問題了 複製代碼 代碼如下: <!DOCTYPE HTML> <html> <head>
Time of Update: 2017-01-19
原始的代碼: 複製代碼 代碼如下: //將文字轉換為16進位 function textToSix(str) { return escape(str).replace(/%/g, function () { return "\\"; }).toLowerCase(); } 改進後的: 複製代碼 代碼如下: //將文字轉換為16進位 function textToHex(str) {
Time of Update: 2017-01-19
複製代碼 代碼如下: //DOM沒有提供insertAfter()方法 function insertAfter(newElement, targetElement){ var parent = targetElement.parentNode; if (parent.lastChild == targetElement) { // 如果最後的節點是目標元素,則直接添加。因為預設是最後 parent.appendChild(newElement); } else {
Time of Update: 2017-01-19
github:https://github.com/hirokidaichi/namespace-js 定義Namespace對象: var Namespace
Time of Update: 2017-01-19
JavaScript 端: 複製代碼 代碼如下: //初始化頁面 function init() { var ary = JSONToArray(XMLReader("node","content.dibi")); var divtoc = document.getElementById("div_toc"); pageCount = ary.length; for(k = 0; k < ary.length; k++){ obj = eval('(' + ary[k] + ')');
Time of Update: 2017-01-19
前幾天看到一個面試題,題目是這樣的: 請你說說對javascript中apply,call,bind的理解? 首先apply和call是老生常談的東西,但是對於bind,我愣了下,因為這個詞是jquery中使用頻率很高的一個方法,用來給DOM元素繫結事件用的。 為了搞清這個陌生又熟悉的bind,google一下,發現javascript1.8.5版本中原生實現了此方法,目前IE9+,ff4+,chrome7+支援此方法,opera和safari不支援(MDN上的說明)。
Time of Update: 2017-01-19
一開始很多人都會拿jquery的選取器來跟這兩個api做對比(我也是),比較異同本來沒事,但卻使一些同學對這兩個api在瀏覽器中的實現產生了誤解,特別是再dom element上調用此api時。 下面是我的jsFiddle樣本,我就以此展開說明: 複製代碼 代碼如下: (function(global) { global.doc = document; global.body = doc.getElementsByTagName('body')[0]; global.$ =
Time of Update: 2017-01-19
引言 有一個通訊錄系統, 同時部署在幾台伺服器上, 但是首頁上有個通訊錄的連結, 連結到這個系統. 問題是, 有時候連結指向的伺服器出故障, 於是希望在這個伺服器出故障(服務不可用)的情況下, 能指向其他伺服器的連結. 解決方案一: XMLHTTP方案 以下代碼摘自[2]中meizz的回帖: 複製代碼 代碼如下: <script language= "javascript"> function getURL(url) { var xmlhttp = new
Time of Update: 2017-01-19
1.獲得當前元素的下一個元素 複製代碼 代碼如下: function getNextElement(node){ if(node.nodeType==1){ return node; } if(node.nextSibling){ return getNextElement(node.nextSibling); } return null; }; 2.外部引入的js,添加頁面載入方法 複製代碼 代碼如下: function addLoadEvent(func){ var
Time of Update: 2017-01-19
本文內容 引入 匿名函數 閉包 變數範圍 函數外部存取函數內部的局部變數 用閉包實現私人成員 引入 閉包是用匿名函數來實現。閉包就是一個受到保護的變數空間,由內嵌函數產生。“保護變數”的思想在幾乎所有的程式設計語言中都能看到。 先看下 JavaScript 範圍: JavaScript 具有函數級的範圍。這意味著,不能在函數外部存取定義在函數內部的變數。 JavaScript 的範圍又是詞法性質的(lexically
Time of Update: 2017-01-19
【廢話】 面試時被經理問到其中一個問題讓我印象很深刻,因為我想了很久沒能答上來。題目是 JavaScript是怎樣實現繼承的? 物件導向是在開發過程中一直使用的,因此,繼承也是最基礎的一部分,自己開始接觸JS到現在差不多兩年多了,這個基礎我竟然都沒過關,看來我的理論功還要加大力度提升啊!!!我重新查了資料,終於深刻理解下來了。廢話就這麼多了,Coding Action... 【本文】
Time of Update: 2017-01-19
介紹 在這篇文章裡,我們將討論跟執行內容直接相關的更多細節。討論的主題就是this關鍵字。 實踐證明,這個主題很難,在不同執行內容中確定this的值經常會發生問題。 許多程式員習慣的認為,在程式語言中,this關鍵字與物件導向程式開發緊密相關,其完全指向由構造器新建立的對象。在ECMAScript規範中也是這樣實現的,但正如我們將看到那樣,在ECMAScript中,this並不限於只用來指向新建立的對象。 下面讓我們更詳細的瞭解一下,在ECMAScript中this的值到底是什嗎? 定義