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 相关文章推荐
div+css布局的图片连续滚动js实现代码
May 04 Javascript
各浏览器对click方法的支持差异小结
Jul 31 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
js使用数组判断提交数据是否存在相同数据
Nov 27 Javascript
jQuery focus和blur事件的应用详解
Jan 26 Javascript
Jquery实现自定义弹窗示例
Mar 12 Javascript
使用AngularJS来实现HTML页面嵌套的方法
Jun 17 Javascript
jquery实现网站列表切换效果的2种方法
Aug 12 Javascript
浅谈Javascript中的12种DOM节点类型
Aug 19 Javascript
js 输入框 正则表达式(菜鸟必看教程)
Feb 19 Javascript
vue省市区三联动下拉选择组件的实现
Apr 28 Javascript
基于Vue.js实现tab滑块效果
Jul 23 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
阿拉伯的咖啡与水烟
2021/03/03 咖啡文化
php读取本地json文件的实例
2018/03/07 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
php中数组最简单的使用方法
2020/12/27 PHP
jquery imgareaselect 使用利用js与程序结合实现图片剪切
2009/07/30 Javascript
用js实现的自定义的对话框的实现代码
2010/03/21 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
javascript中数组的定义及使用实例
2015/01/21 Javascript
JavaScript判断用户是否对表单进行了修改的方法
2015/03/18 Javascript
jQuery消息提示框插件Tipso
2015/05/04 Javascript
Vue.js 2.0 移动端拍照压缩图片预览及上传实例
2017/04/27 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
使用 Element UI Table 的 slot-scope方法
2019/10/10 Javascript
微信小程序单选框自定义赋值
2020/05/26 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
Python交换变量
2008/09/06 Python
Python functools模块学习总结
2015/05/09 Python
利用PyInstaller将python程序.py转为.exe的方法详解
2017/05/03 Python
纯python实现机器学习之kNN算法示例
2018/03/01 Python
python随机数分布random均匀分布实例
2019/11/27 Python
Pytorch .pth权重文件的使用解析
2020/02/14 Python
python批量替换文件名中的共同字符实例
2020/03/05 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python实现UDP程序通信过程图解
2020/05/15 Python
HTML5 本地存储 LocalStorage详解
2016/06/24 HTML / CSS
canvas线条的属性详解
2018/03/27 HTML / CSS
一些网络技术方面的面试题
2014/05/01 面试题
涉外文秘个人求职的自我评价
2013/10/07 职场文书
博士毕业生自我鉴定范文
2014/04/13 职场文书
运动会宣传口号
2014/06/09 职场文书
5s标语大全
2014/06/23 职场文书
就业协议书盖章的注意事项
2014/09/28 职场文书
小平您好观后感
2015/06/09 职场文书
关于Mybatis中SQL节点的深入解析
2022/03/19 Java/Android