javascript擷取隨機顏色

在製作餅圖或標籤雲時,我們通常需要很多顏色,方法有二。一是準備一組漂亮的候選顏色,二是隨機產生顏色。在數量很多或不明確時,我想後者就是唯一的出路了。Google了一下,整理如下,按由淺入深的順序排列。實現1 var getRandomColor = function(){ return '#' + (function(color){ return (color += '0123456789abcdef'[Math.floor(Math.random()*16)])

javascript線性漸層1

javascript在處理映像的能力其實是不弱的,可惜瀏覽器大戰連累了它,這還不算,Adobe 收購Macromedia更讓SVG處於怠工狀態。作為新力軍,蘋果為我們帶來了canvas標籤。canvas首次在Mac OS

javascript替換字元

不用多言,這種技術被廣泛應用於表單驗證,文法高亮和危險字元過濾中。一段話如果很長,如果不想像下面那樣替換,我們得想些辦法了。str = str.replace( /&(?!#?\w+;)/g , '&amp;').replace( /"([^"]*)"/g , '“$1”' ).replace( /</g , '&lt;' ).replace( />/g , '&gt;' ).replace(

javascript contains方法

IE有許多好用的方法,後來都被其他瀏覽器抄襲了,比如這個contains方法。如果A元素包含B元素,則返回true,否則false。唯一不支援這個方法的是IE的死對頭firefox。<!doctype html><title>dom contains 方法 by 司徒正美</title><meta charset="utf-8"/><meta name="keywords" content="dom contains 方法 by 司徒正美"

javascript十進位轉二進位,二進位轉十進位

alert(parseInt("101101", 2))運行代碼 function toBin(intNum) { var answer = ""; if(/\d+/.test(intNum)) { while(intNum != 0) { answer = Math.abs(intNum%2)+answer; intNum = parseInt(intNum/2);

Dmitry Baranovskiy的javascript謎題

Dmitry Baranovskiy是何許人也?他是目前世界最優秀的JS開源圖形庫Raphaël的作者,還做了許多JS遊戲自娛,是JS界頂尖高手之一。以下五道題是放於他的部落格上,直到另一個它們被另一個JS高手Nicholas C. Zakas(Yahoo!首頁首席前端工程師)提到,才迅速在網路蔓延開去。大家先試著自己做一下,想不明白才看解析吧。 if (!("a" in window)) { var a = 1; } alert(a); var a =

javascript bind函數

bind函數,顧名思義,用於為調用函數綁定一個範圍,因為this很容易跟丟它原來所在的範圍,直接指向頂層的window對象。具體結論可參見我另一篇博文《javascript的動態this與動態綁定》。本文專註設計一個無侵入的綁定函數。window.name = "the window object"function scopeTest() { return this.name}// calling the function in global scope:scopeTest()// ->

javascript架構之繼承機制2

我們來模仿一下最OO的mootools的繼承機制。它的類都有一個叫做initialize構造方法,這與Java的類都有一個與類名同名的構造方法一樣的道理。只不過,這些叫initialize或init都是借鑒自Prototype,而Prototype那幫人是Ruby出身。為了區別mootools那種汙染原生方法的做法,我把類的構造器命名為variant,並且禁止查看構造方法(像瀏覽器禁止查看原生對象的構造方法那樣)。 var variant = function (options){

javascript RegExp對象

JavaScript提供了一個RegExp對象來完成有關Regex的操作和功能,每一條Regex模式對應一個RegExp執行個體。有兩種方式可以建立RegExp對象的執行個體。使用RegExp的顯式建構函式,文法為:new

javascript Array擴充

最近看了一下developer.mozilla.org裡的東西,發現它為Array對象添加了不少generic method,趕得上Prototype的熱心程度。indexOf返回元素在數組的索引,沒有則返回-1。與string的indexOf方法差不多。如果其他瀏覽器沒有實現此方法,可以用以下代碼實現相容://09,12,11新修正 Array.prototype.indexOf=function(item, index) { var n =

javascript無縫滾動2

以更少的代碼實現相同的效果應該是我們寫程式的究極目標,當然可讀性不能丟。在第一部分最後一個運行框,我已經做了這樣的探索。不過換湯不換藥,還是來來回回在scrollTop/scrollLeft與offsetTop/offsetLeft上做文章。總的思路基本是這樣,讓某個元素整體向某個方向移動,這樣它裡面的內容(圖片或文字)就跟著移動,當元素移動到某一個距離後就回到原點。為了防止內容移著移著就沒有了,我們需要兩套相同的內容。在第一部分,第二套內容是動態產生的,並複製到另一個兄弟元素中,這在水平滾動時

javascript 特徵偵測技術

這種新式的技術最先由jQuery搞出來的,接著Prototype與mootools都支援了。這技術興起的原因是瀏覽器嗅探技術是不太可靠,如UserAgent很容易被偽造,如IE8的UserAgent就把許多瀏覽器的關鍵字包含進去,造成辯識困難。其他一些重要辯識手段,由於瀏覽器廠商對舊版本的升級與不斷推進新版本,許多都無效了。由於瀏覽器種類越來越多,版本也越來越多,看看Ext的核心檔案吧,真是有耐性,連Firefox與蘋果的各個版本都列出來,這東西會沒有止境地膨脹,為此特徵偵測技術應運而生。這東西

javascript 記憶體泄露工具使用

javascript記憶體泄露的問題一直以來都不受到大家的重視,原因是對使用者的影響沒有太實際的表現,或許近幾年記憶體發展迅速。指令碼記憶體再泄露也不會有太大影響。當然作為前端開發的同學們,就不能有這樣的僥倖心理。出現memory leaks很大程度上是因為程式的不成熟和編碼不太規範造成的。不過,這裡就不說如何出現問題的,對問題的出現有興趣可以參考以下地址:Understanding and Solving Internet Explorer Leak PatternsIE's

javascript 緩衝系統

模仿jQuery,設計了一個緩衝系統。像jQuery.data這樣的東西,Prototype與mootools也有,目的都是用來輔助事件系統,用來緩衝其中產生的資料,而非緩衝普通函數上次計算的結果。Prototype利用了它的Hash類,mootools沒細看,它內部好像用來緩衝uuid。一個共識是,為頁面用到的元素設定uuid非常有用,要尋找元素時,可以避免重複尋找,也可以用於與事件回呼函數相綁定。由於uuid目前只有IE支援,它叫做uniqueID,格式為ms__id\d+,後面的數字也有名

javascript uuid技術

這主要用於選取器過濾重複元素時用的。涉及三種可能的手段:sourceIndex,uniqueID與自訂的uuid。sourceIndex 擷取元素節點在頁面的出現順序,即為其在document.all集合中的索引號。由於要準確擷取先後位置,如果在其前面插入一個元素節點,那麼它的位置就要加一。換言之,它是動態分配的,每次都要重複計算。注意,IE only,唯讀。uniqueID 也是一個IE

javascript 包裹節點

模仿jQuey,建立幾個包裹節點的方法,發現jQuery的方法很低效啊,下一次他又可以說這幾個方法可以提升了多少多少了。原理基本是這樣,如果傳入的是字串,那麼讓它們變成一個元素節點,不過這元素節點也可以有許多層,在最內層把要包裹的元素放進。把字串變成元素節點的方法有如下幾個。1,createElement,IE可以連元素屬性也一起建立,但只能建立一層。2,innerHTML,不過需要對原來的字串進行處理,IE與FF都有許多意想不到的預設行為,可以為你多加一點東西或少加一點東西。3,createC

kangax 的javascript謎題

第一題 (function(){ return typeof arguments; })();//問自動執行函數會返回什麼值 // 就是考Arguments對象的typeof // 看平時用firebug多不多了……第二題 var f = function g(){ return 23; }; typeof g();//問最後一行的執行結果 //根據標準,命名函數運算式的函數名只對函數體內可見//因此報錯第三題 (function(x){ delete

javascript事件系統的發展史2

綜觀一個系統的發展,無非是發現一個問題就把它獨立出來解決掉,因此它的所有模組(或者分支)其實針對獨立的問題,這樣我們對這些問題若有什麼更好的解決方案,替換相應的模組便是,要不代碼混雜在一起沒法看了。上一部分就提到了,attachEvent的事件列隊出了些問題,我們要手動構建列隊了。所謂列隊就是有先有後的問題,因此DE大神搞了一個全域的uuid,分配給每個回呼函數。但要注意,每個回調所針對的事件來源與事件類型,因此這不可能一個數組搞定。看:el.attachEvent("onmouseenter"

為IE的javascript提速

我們知道,javascript在執行期時是由內到外執行指令碼的,那麼離我們的指令碼最遠的全域對象,很可能要跨越幾層範圍才能訪問到它。不過在IE中,從最內層到最外層要花的時間比其他多出很多。加之,javascript是一種膠水語言,它必須要調用DOM對能完成我們大多數選擇。最著名的就是選擇元素(document.getElementById,document.getElementsByTagName,docuemnt.evaluate,document.querySelector),建立元素(do

javascript 替換節點

這可能是最被忽略的文檔操作之一,這都怪微軟的不作為與W3C的無能,搞到大家只知道appendChild與insertBefore。後來爆出appendChild在IE有bug,好了,以後只用insertBefore了。現在jQuery興起後,無數趕鴨子上架的javascript素人連基本API也不學了,直接上手append, preppend, before, after與replaceWith,這比較悲哀……好了,我們先來看w3c的替換節點方法吧。replacedNode =

總頁數: 3271 1 .... 214 215 216 217 218 .... 3271 Go to: 前往

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。