Time of Update: 2018-12-08
offsetTop 可以獲得 HTML 元素距離上方或外層元素的位置,style.top 也是可以的,二者的區別是: 一、offsetTop 返回的是數字,而 style.top 返回的是字串,除了數字外還帶有單位:px。 二、offsetTop 唯讀,而 style.top 可讀寫。 三、如果沒有給 HTML 元素指定過 top 樣式,則 style.top 返回的是Null 字元串。 offsetLeft 與 style.left、offsetWidth 與
Time of Update: 2018-12-08
在Javascript,全域環境本身就一個對象。在瀏覽器宿主中這個對象是window,而當Javascript用於其它非瀏覽器的宿主,如嵌入式的環境中,可能會是其它的對象。 在這裡也糾正一個觀念,有很多人都認為Javascript只在瀏覽器中使用,其實Javascript也能在很多非Web情況下使用,據介紹Javascript在一些基於嵌入式的應用領域表現得也很出色,當然這些我也只是聽過傳說而已。 言歸正傳,當我們寫下:var i=1時,其實就是聲明了一個window範圍的一個變數。
Time of Update: 2018-12-08
就像我們可以寫成這樣的形式一樣: 複製代碼 代碼如下:function Hello() { alert("Hello"); } Hello(); var Hello = function () { alert("Hello"); } Hello(); 其實都是一樣的。 但是當我們對其中的函數進行修改時,會發現很奇怪的問題。 複製代碼 代碼如下:<script type="text/javascript"> function Hello() { alert("Hello"); }
Time of Update: 2018-12-08
例如,在Chrome下調試如下程式,很清楚的展示了這點:
Time of Update: 2018-12-08
雖然這個集合的 key 只能是 String 類型,不像 Java 裡面的各種集合類能夠使用各種對象作為 Key ,但對於實現一般的用戶端 JS 功能來說,已經是足夠用了。同樣,因為所有的 JS 內部對象都繼承自 Object 對象,所以實際上 JS 的 Array 對象也可以使用字串來做為數組的下標,就像 PHP 中的陣列變數一樣。來自鳥食軒。
Time of Update: 2018-12-08
代碼類型只有一種形式就是function。 undefined:未定義,我們也可稱之為不存在,typeof(undefined)=undefined. null:為空白。undefined是不存在,而null是存在,但卻無。typeof(null)=object,但null又不是object,這就是null的神奇而獨特之處。 boolean:true or false。
Time of Update: 2018-12-08
typeof用以擷取一個變數的類型,typeof一般只能返回如下幾個結果:number,boolean,string,function,object,undefined。我們可以使用typeof來擷取一個變數是否存在,如 if(typeof a != "undefined"){},而不要去使用if(a)因為如果a不存在(未聲明)則會出錯,對於Array,Null等特殊對象使用typeof一律返回object,這正是typeof的局限性。
Time of Update: 2018-12-08
先看一下官方的解釋: call 方法 請參閱 應用於:Function 對象 要求 版本 5.5 調用一個對象的一個方法,以另一個對象替換當前對象。 call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 參數 thisObj 可選項。將被用作當前對象的對象。 arg1, arg2, , argN 可選項。將被傳遞方法參數序列。 說明 call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的物件內容從初始的上下文改變為由 thisObj
Time of Update: 2018-12-08
有時候可能會有這麼一個需求,我在後台使用: 複製代碼 代碼如下:HttpUtility.UrlEncode(str, System.Text.Encoding.UTF8); 將Url進行編碼,前台JS需要使用這段內容,這時候就需要解碼了: 代碼 複製代碼 代碼如下:/** * Url編碼 **/ ShengUtils.encode = function(unzipStr){ var zipstr=""; var strSpecial="!\"#$%&'()*+,/:;<=>?
Time of Update: 2018-12-08
有人說javascript也是物件導向的,只是它是prototype based,當然這隻是概念上的區別,我不想討論js是不是物件導向的,關鍵是想說明雖然javascript的類表現得很像其他語言中的類,但是內部的實現機理確不太一致,如果一味的把javascript中的類類比作其他語言中的類,有時候腦子會犯混。 先看一段簡單的代碼,一般教材上介紹如何建立一個類的時候都是這樣的(當然還有更複雜的方法,不過本質上是一樣的): 複製代碼 代碼如下:function MyClass(x) { this.
Time of Update: 2018-12-08
如果你不知道原因,不要過於擔心,請研究CSS規則並查看這篇文章:使用CSS來修正一切: 20 +常見錯誤和修複。 如果這些也無效,您可以通過下面列出的12個javascript解決方案修複它,這樣您的網頁看起來就能跨越所有瀏覽器了! 在本文中,我們會揭開你在開發web應用是可能會遇到的12個最常見的CSS問題的javascript解決方案。 1. 自動匹配高度自從我們拋棄了基於Table的頁面配置後,建立同等高度欄目或內容盒子的視覺效果已然是一個挑戰。1.1
Time of Update: 2018-12-08
空間就全憑CSS的絕對位置實現位移了。在開始之前,我們練習一下setTimeout的遞迴用法(用來類比setInterval)。 複製代碼 代碼如下:function text(el){ var node = (typeof el == "string")? document.getElementById(el) : el; var i = 0; var repeat = function(){ setTimeout(function(){ node.innerHTML =
Time of Update: 2018-12-08
以前這些東西自己清楚,可是卻解釋不出來,也沒有去深究這些東西。今天在看《悟透JavaScript》的時候,看到作者的描述,“茅廁”頓開。 現摘錄如下,作者說的很是清楚: 用 var anObject = new aFunction() 形式建立對象的過程實際上可以分為三步: 第一步是建立一個新對象; 第二步將該對象內建的原型對象設定為建構函式prototype引用的那個原型對象; 第三步就是將該對象作為this參數調用建構函式,完成成員設定等初始化工作。
Time of Update: 2018-12-08
複製代碼 代碼如下://取得元素x座標 function pageX(elem) { return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft; } //取得元素y座標 function pageY(elem) { return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop; }
Time of Update: 2018-12-08
因為在JavaScript中,mousedown、mouseup、click執行順序是從左至右的,更重要的是一旦mousedown事件啟用,正常情況(不在mousedown事件中綁定的方法使用alert類似方法,因為彈出對象框就阻止了事件傳遞,即後續呼叫事件丟失)下後面兩個事件也肯定會被啟用。平時我們在一個標籤上只綁定一個click事件,其實觸發click事件也都調用了mousedown、mouseup等事件,只是它們調用周期極短,而且我們又沒有編寫相關函數與這兩個事件綁定,所以不會覺察到。現在
Time of Update: 2018-12-08
具體結論可參見《javascript下動態this與動態綁定執行個體代碼》。本文專註設計一個無侵入的綁定函數。[Ctrl+A 全選 注:如需引入外部Js需重新整理才能執行]基於不擴充原生對象的原則,弄了這個bind函數(dom為範圍),用法與Prototype架構的bind差不多。 複製代碼 代碼如下:dom.bind = function(fn,context){ //第二個參數如果你喜歡的話,也可以改為thisObject,scope, //總之,是一個新的範圍對象 if
Time of Update: 2018-12-08
複製代碼 代碼如下:var rgb2hex = function(rgb) { rgb = rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); return "#"+tohex(rgb[1])+tohex(rgb[2])+tohex(rgb[3]) } var tohex = function(x) { var hexDigits = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E'
Time of Update: 2018-12-08
複製代碼 代碼如下:function forEach(object, block, context, fn) { if (object == null) return; if (!fn) { if (typeof object == "function" && object.call) { //遍曆普通對象 fn = Function; } else if (typeof object.forEach == "function" &&
Time of Update: 2018-12-08
JQuery,mootools,Ext等類庫在這部分實現得非常艱辛,盤根錯節地動用一大堆方法,因此想把這部分摳出來難度很大。深入研究它們的實現後,根據我積累的CSS知識,終於做出一個非常簡煉的版本出來。它相當於JQuery.cssCur吧,不過或許功能還豐富一些,按飲食業話說叫“加量不加價”,我的可能還應叫“加量還減價”……版本還處於Beta階段,由於只個工具函數就不弄成類了。 複製代碼 代碼如下:var getStyle = function(el, style){ if(!+"\v1"){
Time of Update: 2018-12-08
那麼函數就是被掰成兩部分儲存於對象,一是其函數名(鍵),一是函數體(值),那麼函數中的this一般都指向函數所在的對象。但這是一般而已,在全域調用函數時,我們並沒有看到調用者,或者這時就是window。不過,函式宣告後,其實並沒有綁定到任何對象,因此我們可以用call apply這些方法設定調用者。 一個簡單的例子: [script] <script> window.name = "window"; var run = function() { alert("My name is "