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/