javascript编程开发中取色器及封装$函数用法示例


Posted in Javascript onAugust 09, 2017

本文实例讲述了javascript编程开发中取色器及封装$函数用法。分享给大家供大家参考,具体如下:

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.取色器

<!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属性只能获取内联样式,对于外部样式和嵌入式样式需要用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("颜色值出错了!");
          return;
        }
        //变色定时器
        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>

点击此处查看在线演示效果

Javascript 相关文章推荐
向左滚动文字 js代码效果
Aug 17 Javascript
用JQuery实现全选与取消的两种简单方法
Feb 22 Javascript
wap浏览自动跳转到wap页面的js代码
May 17 Javascript
JS数组的遍历方式for循环与for...in
Jul 31 Javascript
JavaScript中的Math.LOG2E属性使用详解
Jun 14 Javascript
javascript电商网站抢购倒计时效果实现
Nov 19 Javascript
JS实现图片上传预览功能
Nov 21 Javascript
jQuery简易时光轴实现方法示例
Mar 13 Javascript
深入理解ES7的async/await的用法
Sep 09 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
Dec 19 Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
vuejs父子组件之间数据交互详解
Aug 09 #Javascript
Angular在模板驱动表单中自定义校验器的方法
Aug 09 #Javascript
浅谈react+es6+webpack的基础配置
Aug 09 #Javascript
js中less常用的方法小结
Aug 09 #Javascript
利用JS做网页特效_大图轮播(实例讲解)
Aug 09 #Javascript
基于Vue实例对象的数据选项
Aug 09 #Javascript
react-native之ART绘图方法详解
Aug 08 #Javascript
You might like
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP 删除一个目录及目录下的所有文件的函数代码
2010/05/26 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
JavaScript RegExp方法获取地址栏参数(面向对象)
2009/03/10 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
Jquery节点遍历next与nextAll方法使用示例
2014/07/22 Javascript
NodeJS学习笔记之Http模块
2015/01/13 NodeJs
jQuery简单实现禁用右键菜单
2015/03/10 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
jQuery异步上传文件插件ajaxFileUpload详细介绍
2015/05/19 Javascript
JQuery实现Ajax加载图片的方法
2015/12/24 Javascript
JS实现保留n位小数的四舍五入问题示例
2016/08/03 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
vue实现todolist基本功能以及数据存储功能实例详解
2019/04/11 Javascript
vue实现直播间点赞飘心效果的示例代码
2019/09/20 Javascript
解决vue组件中click事件失效的问题
2019/11/09 Javascript
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
python getopt详解及简单实例
2016/12/30 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Vs Code中8个好用的python 扩展插件
2020/10/12 Python
CSS3+js实现简单的时钟特效
2015/03/18 HTML / CSS
CSS3的常见transformation图形变化用法小结
2016/05/13 HTML / CSS
使用HTML5 Canvas API中的clip()方法裁剪区域图像
2016/03/25 HTML / CSS
英国排名第一的礼品体验公司:Red Letter Days
2018/08/16 全球购物
荷兰音乐会和音乐剧门票订购网站:Topticketshop
2019/08/27 全球购物
主题党日活动总结
2014/07/08 职场文书
2014年国庆节广播稿
2014/09/19 职场文书
领导干部个人整改措施落实情况汇报
2014/10/29 职场文书
安全教育主题班会总结
2015/08/14 职场文书
2016年校长新年寄语
2015/08/17 职场文书
2016创先争优活动党员公开承诺书
2016/03/24 职场文书
springboot layui hutool Excel导入的实现
2022/03/31 Java/Android