javascript編程開發(fā)中取色器及封裝$函數(shù)用法示例
本文實(shí)例講述了javascript編程開發(fā)中取色器及封裝$函數(shù)用法。分享給大家供大家參考,具體如下:
1.封裝$函數(shù)
function $(str){
//如果傳入的是'#' 則選擇id標(biāo)簽
//如果傳入的是'.' 則選擇所有的類名標(biāo)簽
//如果傳入的既不是'#也不是'.' 選擇復(fù)合標(biāo)簽
//判斷傳入的值
if(typeof str !='string'){
console.log('傳入的參數(shù)有誤!');
return null;
}
//獲取參數(shù)的第一個(gè)字母
var firstChar=str.charAt(0);
var name=str.substr(1);
switch(firstChar){
case '#':
console.log('id選擇器');
return document.getElementById(name);
break;
case '.':
//類選擇器:getElementsByClassName是在js中新加入的,對(duì)于老的ie6,ie7無法兼容
console.log('類選擇器');
//兼容性
//1.判斷是否能夠使用getElementsByClassName
if(!document.getElementsByClassName){
return document.getElementsByClassName(name);
}else{
//2.獲取所有的標(biāo)簽
//3.逐個(gè)判斷是否帶有該類名
//4.如果有則添加到數(shù)組中
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){
//加入到數(shù)組中去
resultElements.push(elements[i]);
console.log(resultElements);
}
}
}
return resultElements;
}
break;
default:
console.log('標(biāo)簽選擇器');
name=str.substr(0);
return document.getElementsByTagName(name);
}
}
2.取色器
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="js/select.js"></script>
<style>
*{
margin: 0;
padding: 0;
}
#box{
width: 300px;
height: 300px;
background:rgb(0,0,0);
margin:20px;
}
#btn{
padding:0 20px;
}
input{
width: 100px;
}
</style>
<script>
//javascript的style屬性只能獲取內(nèi)聯(lián)樣式,對(duì)于外部樣式和嵌入式樣式需要用currentStyle屬性。但是,currentStyle在FIrefox和Chrome下不支持,需要使用如下兼容性代碼
HTMLElement.prototype.__defineGetter__("currentStyle", function () {
return this.ownerDocument.defaultView.getComputedStyle(this, null);
});
function bgColor(obj){
return obj.currentStyle.backgroundColor;
}
function compare(color1,color2){
if(color1>color2){
return -1;
}else if(color1<color2){
return 1;
}else{
return 0;
}
}
window.onload=function(){
var red;
var green;
var blue;
var boxColor=[];
$('#btn').onclick=function(){
red=Number($('#red').value);
green=Number($('#green').value);
blue=Number($('#blue').value);
boxColor=bgColor($('#box')).split('(');
boxColor=boxColor[1].split(')');
boxColor=boxColor[0].split(',');
if(red>255||red<0 || green>255||green<0 || blue>255||blue<0){
alert("顏色值出錯(cuò)了!");
return;
}
//變色定時(shí)器
var timer=setInterval(function(){
boxColor[0]=Number(boxColor[0])+compare(boxColor[0],red);
boxColor[1]=Number(boxColor[1])+compare(boxColor[1],green);
boxColor[2]=Number(boxColor[2])+compare(boxColor[2],blue);
$('#box').style.background='rgb('+boxColor[0]+','+boxColor[1]+','+boxColor[2]+')';
if(boxColor[0]==red&&boxColor[1]==green&&boxColor[2]==blue){
clearInterval(timer);
}
},10);
}
}
</script>
</head>
<body>
<div id="box"></div>
red:<input type="text" id="red">
green:<input type="text" id="green">
blue:<input type="text" id="blue">
<button id="btn">取色</button>
</body>
</html>
點(diǎn)擊此處查看在線演示效果。
PS:這里再為大家推薦幾款本站的相關(guān)在線工具:
在線RGB、HEX顏色代碼生成器:
http://tools.jb51.net/color/rgb_color_generator
RGB顏色查詢對(duì)照表_顏色代碼表_顏色的英文名稱大全:
http://tools.jb51.net/color/jPicker
在線網(wǎng)頁調(diào)色板工具:
http://tools.jb51.net/color/color_picker
在線顏色選擇器工具/RGB顏色查詢對(duì)照表:
http://tools.jb51.net/color/colorpicker
更多關(guān)于JavaScript相關(guān)內(nèi)容可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動(dòng)畫特效與技巧匯總》、《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》
希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。
相關(guān)文章
js+css實(shí)現(xiàn)select的美化效果
這篇文章主要為大家詳細(xì)介紹了js+css實(shí)現(xiàn)select的美化效果,如何針對(duì)select進(jìn)行美化,感興趣的小伙伴們可以參考一下2016-03-03
淺析JavaScrip哪些操作會(huì)造成內(nèi)存泄露以及預(yù)防方法
在?JavaScript?中,內(nèi)存泄露是指程序不再使用的內(nèi)存沒有被釋放,從而導(dǎo)致內(nèi)存的持續(xù)增長,最終可能導(dǎo)致性能下降或應(yīng)用崩潰,本文整理了一些容易造成內(nèi)存泄漏的操作以及預(yù)防方法,需要的可以了解下2024-12-12
JavaScript簡單遍歷DOM對(duì)象所有屬性的實(shí)現(xiàn)方法
這篇文章主要介紹了JavaScript簡單遍歷DOM對(duì)象所有屬性的實(shí)現(xiàn)方法,涉及JavaScript針對(duì)頁面元素屬性操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
javascript之對(duì)系統(tǒng)的toFixed()方法的修正
javascript之對(duì)系統(tǒng)的toFixed()方法的修正...2007-05-05
JS與jQuery遍歷Table所有單元格內(nèi)容的方法
這篇文章主要介紹了JS與jQuery遍歷Table所有單元格內(nèi)容的方法,結(jié)合實(shí)例形式分別描述了JavaScript與jQuery實(shí)現(xiàn)遍歷table單元格的實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-12-12
WebApi+Bootstrap+KnockoutJs打造單頁面程序
這篇文章主要介紹了WebApi+Bootstrap+KnockoutJs打造單頁面程序的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-05-05
微信小程序?qū)崿F(xiàn)驗(yàn)證碼獲取倒計(jì)時(shí)效果
這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)驗(yàn)證碼獲取倒計(jì)時(shí)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Electron 使? electron-builder 打包應(yīng)用過程詳解
Electron應(yīng)用開發(fā)中,electron-builder是一個(gè)常用的打包工具,提供了多種自定義配置,不過,使用npm安裝electron-builder時(shí)可能會(huì)遇到下載依賴慢或失敗的問題,本文給大家介紹Electron 使? electron-builder 打包應(yīng)用的相關(guān)操作,感興趣的朋友一起看看吧2024-10-10

