javascript編程:取色器/封裝$函數

来源:http://www.cnblogs.com/nlj-blog/archive/2017/08/08/7308416.html
-Advertisement-
Play Games

1.封裝$函數 2.取色器 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Document</title> 6 <script src="js/select.js"></script> ...


1.封裝$函數

function $(str){
            //如果傳入的是'#' 則選擇id標簽
            //如果傳入的是'.' 則選擇所有的類名標簽
            //如果傳入的既不是'#也不是'.'  選擇複合標簽
            //判斷傳入的值
            if(typeof str !='string'){
                console.log('傳入的參數有誤!');
                return null;
            } 
            //獲取參數的第一個字母
            var firstChar=str.charAt(0);
            var name=str.substr(1);
            switch(firstChar){
                case '#':
                    console.log('id選擇器');
                    return document.getElementById(name);
                    break;
                case '.':
                    //類選擇器:getElementsByClassName是在js中新加入的,對於老的ie6,ie7無法相容
                    console.log('類選擇器');
                    //相容性
                    //1.判斷是否能夠使用getElementsByClassName
                    if(!document.getElementsByClassName){
                        return document.getElementsByClassName(name);
                    }else{
                        //2.獲取所有的標簽
                        //3.逐個判斷是否帶有該類名
                        //4.如果有則添加到數組中
                        var resultElements=[];
                        var elements=document.getElementsByTagName('*');
                        // console.log(element);
                        for(var i=0;i<elements.length;i++){
                            var element=elements[i];
                            var class_name=element.className.split(' ');
                            for(var j=0;j<class_name.length;j++){
                                if(class_name[j]==name){
                                        //加入到數組中去
                                        resultElements.push(elements[i]);
                                        console.log(resultElements);
                                }
                            }
                        }
                        return resultElements;
                    }
                    break;
                default:
                    console.log('標簽選擇器');
                    name=str.substr(0);
                    return document.getElementsByTagName(name);
            }
        }

2.取色器

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Document</title>
 6     <script src="js/select.js"></script>
 7     <style>
 8         *{
 9             margin: 0;
10             padding: 0;
11         }
12         #box{
13             width: 300px;
14             height: 300px;
15             background:rgb(0,0,0);
16             margin:20px;
17         }
18         #btn{
19             padding:0 20px;
20         }
21         input{
22             width: 100px;
23         }
24     </style>
25     <script>
26         //javascript的style屬性只能獲取內聯樣式,對於外部樣式和嵌入式樣式需要用currentStyle屬性。但是,currentStyle在FIrefox和Chrome下不支持,需要使用如下相容性代碼
27         HTMLElement.prototype.__defineGetter__("currentStyle", function () { 
28             return this.ownerDocument.defaultView.getComputedStyle(this, null); 
29         });
30          
31         function bgColor(obj){
32             return  obj.currentStyle.backgroundColor;
33         }
34         function compare(color1,color2){
35             if(color1>color2){
36                 return -1;
37             }else if(color1<color2){
38                 return 1;
39             }else{
40                 return 0;
41             }
42         }
43         window.onload=function(){
44             
45             var red;
46             var green;
47             var blue;
48             var boxColor=[];
49             $('#btn').onclick=function(){
50                 red=Number($('#red').value);
51                 green=Number($('#green').value);
52                 blue=Number($('#blue').value);
53                 boxColor=bgColor($('#box')).split('(');
54                 boxColor=boxColor[1].split(')');
55                 boxColor=boxColor[0].split(',');
56                 if(red>255||red<0 || green>255||green<0 || blue>255||blue<0){
57                     alert("顏色值出錯了!");
58                     return;
59                 }
60                 //變色定時器
61                 var timer=setInterval(function(){
62                     boxColor[0]=Number(boxColor[0])+compare(boxColor[0],red);
63                     boxColor[1]=Number(boxColor[1])+compare(boxColor[1],green);
64                     boxColor[2]=Number(boxColor[2])+compare(boxColor[2],blue);
65                     $('#box').style.background='rgb('+boxColor[0]+','+boxColor[1]+','+boxColor[2]+')';
66                     if(boxColor[0]==red&&boxColor[1]==green&&boxColor[2]==blue){
67                         clearInterval(timer);
68                     }
69                 },10);
70             }
71         }
72     </script>
73 </head>
74 <body>
75     <div id="box"></div>
76     red:<input type="text" id="red">
77     green:<input type="text" id="green">
78     blue:<input type="text" id="blue">
79 
80     <button id="btn">取色</button>
81 </body>
82 </html>
取色器

 效果預覽:https://happyn6j.github.io/Spectroscope.com/


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 初入前端,網上找的很多資料都不夠詳細,導致遇到很多問題,現記錄如下: 1.首先引入 <script src="~/Scripts/jquery-1.10.2.js"></script> <script src="~/Scripts/jquery.form.js"></script> 這個兩個 腳本庫 ...
  • [1]data [2]computed [3]methods [4]watch ...
  • 使用!!操作符轉換布爾值 有時候我們需要對一個變數查檢其是否存在或者檢查值是否有一個有效值,如果存在就返回true值。為了做這樣的驗證,我們可以使用!!操作符來實現是非常的方便與簡單。對於變數可以使用!!variable做檢測,只要變數的值為:0、null、" "、undefined或者NaN都將返 ...
  • 大圖輪播完整流程代碼操作: <style> * { margin: 0px; padding: 0px; } .stage { width: 500px; height: 300px; border: 5px solid black; margin: 200px; position: relativ ...
  • get請求代碼: api.ajax({ url:'http://m.weather.com.cn/data/101010100.html' //天氣預報網站的WebService介面},function(ret,err){ if (ret) { api.alert({msg:JSON.stringi ...
  • canvas背景效果: ...
  • 一、css簡介 css(Cascading Style Sheets)層疊樣式表,是一種為html文檔添加樣式的語言,主要有兩個功能:渲染和佈局。使用css主要關註兩個點:查找到標簽,屬性操作 二、css的引入方式 (1)行內式引入: 直接在html語句的屬性中設置,這種方法的缺點是html代碼和c ...
  • Babel是一個廣泛使用的轉碼器,可以將ES6代碼轉譯為ES5代碼,從而在現有環境下執行。 舉例說明: 轉譯前(ES6格式)代碼如下: 轉譯後(ES5格式)代碼如下: 如上用Babel轉譯為ES5格式後就可以在現有的javascript環境下運行了。 babel安裝與項目部署步驟如下: 1.新建一個 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...