Time of Update: 2017-01-19
當時考慮有三種方法: 1.直接把路徑寫在js檔案裡,但如果引用頁面路徑層級改變就沒轍了。 2.寫個class,放在主題包裡的css檔案或者單獨建立一個css檔案給日期控制項專用。但是控制項中的其他元素並沒有使用class的需要,單獨建立相應css文檔似乎小題大做。 3.把以上兩個方法排除後,自然要採用動態載入圖片路徑的方法咯。 關鍵代碼如下: 複製代碼 代碼如下: //建立一個全域變數儲存路徑 var imgRootUrl = ""; //擷取圖片路徑所在目錄 var
Time of Update: 2017-01-19
剛寫完,歡迎大家幫忙測試 完整的測試代碼: 進階目錄,檔案名稱排序 進階目錄,檔案名稱排序 主要實現了目錄中的數字按大小排序 排序結果: [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]主要的排序功能源碼如下(v1): 複製代碼 代碼如下: var fileSort=function(arr){ arr.sort(); var res=[],temp=[],i=0,j=0,k,reg,sc=true,cur=arr[0];
Time of Update: 2017-01-19
這裡使用原生的javascript,用物件導向的方式建立一個容易維護使用方便的滑動菜單,調用方式如下: 複製代碼 代碼如下: var $sliding = document.getElementById("silding"); var s1 = new Sliding(); s1.commands = $sliding.getElementsByTagName("dt"); s1.panels = $sliding.getElementsByTagName("dd"); ;
Time of Update: 2017-01-19
因為絕大多數的瀏覽器都和它相容,你可以在這些瀏覽器中使用它。JavaScript被接受的相當快,因為它是如此的簡單,而且使用範圍相當廣泛。許多程式員過去常常認為JavaScript是一門“玩具語言”,但是,AJAX進入市場後表現出了完全相反的一面,它讓JavaScript展現出了完全不同的能力和功能。
Time of Update: 2017-01-19
以問題開始: function Base(){}var base = new Base() 上面兩行代碼會建立幾個對象(object)? 要回答這個問題,先明確一下Javascript裡object的概念。 Objects 在Javascript裡,幾乎一切都是object(Arrays、Functions、Numbers、Objects……),而沒有C#裡的class的概念。object的本質是一個name-value
Time of Update: 2017-01-19
大家在使用JS提交資料時,尤其是中文的時候,經常會需要將要提交的字串進行URL編碼。在JS中對字串進行URL編碼有好幾種方 法,encodeURI,encodeURIComponent,還有escape。在我看到的很多代碼中escape這個函數用的最多,不過這個函數卻 是不推薦使用的。下面我們來分別看看這幾個函數: encodeURI:對指定的字串進行URL編碼,不包括 : # / \ = & 這些URL中的關鍵字符。
Time of Update: 2017-01-19
效果如圖所示:下面是擷取系統內建的顏色選取器的代碼: [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]優點是:代碼比較少缺點是:只能IE下使用。
Time of Update: 2017-01-19
以下是代碼: 複製代碼 代碼如下:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type"
Time of Update: 2017-01-19
這是一個比較特殊的屬性,Javascript中的繼承一般都依賴這屬性實現。 在Javascript中,一切都是對象,字串是對象,數組是對象,變數是對象,函數也是對象,所以才會允許['a','b','c'].push('d');這樣的操作存在。類本身也是一個對象,也可以定義屬性和方法: 複製代碼 代碼如下: function Test(){}; Test.str = 'str'; Test.fun = function(){return 'fun';}; var r1 = Test.str; //
Time of Update: 2017-01-19
即然該功能如此需要,但為什麼js中不提供這樣的函數呢? 目前瀏覽器都是在UI線程解析js,以Firefox瀏覽器為例,我重新編譯了js引擎,並且在js引警中添加了sleep方法,該方法調用c語言的線程睡眠函數. 將方法附加到Object上,方法簽名為sleep();無參數.預設休眠1秒鐘,如果你在js中調用該函數,瀏覽器UI介面將被阻礙。 另外如果你的js函數存在死迴圈,瀏覽器的js解析會檢測到js執行逾時會提醒你是否終止執行本頁面的js.
Time of Update: 2017-01-19
JavaScript 的成功讓人津津樂道,為 Web 網頁編寫 JavaScript 代碼已經是所有 Web 設計師的基本功,這門有趣的語言蘊藏著許多不為人熟知的東西,即使多年的 JavaScript 程式員,也未能完全吃透。本文從7個方面講述 JavaScript 中那些你不很熟知但非常實用的技巧。簡略語句 JavaScript 可以使用簡略語句快速建立對象和數組,比如下面的代碼:Code highlighting produced by Actipro CodeHighlighter
Time of Update: 2017-01-19
複製代碼 代碼如下: <script type="text/javascript"> function createArray() { var arr = new Array(); for (var i = 0; i < 10; i++) { arr[i] = function () { return i; } } return arr; } var funcs = createArray(); for (var i = 0; i < funcs.length; i++)
Time of Update: 2017-01-19
順便提示一下: 詞法範圍:變數的範圍是在定義時決定而不是執行時決定,也就是說詞法範圍取決於源碼,通過靜態分析就能確定,因此詞法範圍也叫做靜態範圍。 with和eval除外,所以只能說JS的範圍機制非常接近詞法範圍(Lexical scope)。 下面是一個簡單的使用全域變數的閉包執行個體: 複製代碼 代碼如下: var sWord="Hello,Welcome to web前端開發工程師的部落格,請多多指教。" function disWord(){ alert(sWord); }
Time of Update: 2017-01-19
複製代碼 代碼如下: var classA = function(){ this.prop1 = 1; } classA.prototype.func1 = function(){ var that = this, var1 = 2; function a(){ return function(){ alert(var1); alert(this.prop1); }.apply(that); }; a(); } var objA = new ClassA(); objA.func1();
Time of Update: 2017-01-19
原先使用的是try-catch的方式,在catch語句中,我們會收到一個Error對象(我們也可以拋出一個自訂異常對象)。Firefox中的Error對象擁有如下屬性: message —— 錯誤提示資訊 fileName —— 表示出錯代碼所在檔案 lineNumber —— 出錯代碼所在行數 stack —— 出錯堆棧資訊 name —— 異常對象名/類型 但是在IE下,Error對象只有如下屬性: name —— 異常對象名/類型,和Firefox中顯示的名稱可能不同 message ——
Time of Update: 2017-01-19
標準的Get和Set訪問器的實現 複製代碼 代碼如下: function Field(val){ this.value = val; } Field.prototype = { get value(){ return this._value; }, set value(val){ this._value = val; } }; var field = new Field("test"); field.value="test2"; //field.value will now return
Time of Update: 2017-01-19
JavaScript隨機排序 [Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]
Time of Update: 2017-01-19
在發了博文之後,我又花了一些時間嘗試解決這個問題……經過幾次嘗試之後,我找到了另一種pattern,括弧並不再是必要的了: 複製代碼 代碼如下: eval(function () { var s = '', ww = [v] > (s += v); var ws = [n] > ww(' <A href="#">(' + n + ')</A> '); pnView3(14, [n] > ww(' [' + n + '] '), 1, 37, ws, []
Time of Update: 2017-01-19
在前一篇博文中我介紹了一種可以讓JavaScript多少具備一點類似Lambda運算式的編程能力的辦法,但是由於要相容於JavaScript的語法檢查,所以可以使用的場合也很有限。 不過有些比較細心的朋友可能發現了,我在那個(偽)Lambda模組中使用了幾個小技巧,現在我就把這幾個小技巧介紹一下: 1、使用new Function來進行語法檢查。 嘗試寫架構的同學們一定對此感受頗深:有的時候通過代碼產生的代碼可能因為技術上的失誤而產語法錯誤,導致運行過程中異常中斷;有的時候需要接受使用者的輸入,
Time of Update: 2017-01-19
但是我後來也跟人說,因為接受的參數太多,所以如果不把智能提示寫得很清楚的話,連我自己都常常搞不清楚該怎麼用。 不過,接受參數多,除了容易弄錯用法以外,還會產生另一個問題,這也是我編寫出今天發布的這個東西的原因。 來看一下JS版的頁碼呈現組件的完全版函數簽名: 複製代碼 代碼如下: function pnView( currentPage, actionCurrent, beginPage, endPage, actionBegin, actionEnd, currentSiblings,