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 相关文章推荐
Node.js的特点和应用场景介绍
Nov 04 Javascript
浅谈JS闭包中的循环绑定处理程序
Nov 09 Javascript
javascript html5实现表单验证
Mar 01 Javascript
Move.js入门
Feb 08 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
Aug 31 Javascript
JS基于设计模式中的单例模式(Singleton)实现封装对数据增删改查功能
Feb 06 Javascript
node thread.sleep实现示例
Jun 20 Javascript
Node.js连接Sql Server 2008及数据层封装详解
Aug 27 Javascript
Node.js中Koa2在控制台输出请求日志的方法示例
May 02 Javascript
ionic3双击返回退出应用的方法
Sep 17 Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 Javascript
vue data有值,但是页面{{}} 取不到值的解决
Nov 09 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/04 咖啡文化
关于Intype一些小问题的解决办法
2008/03/28 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
PHP加密解密类实例分析
2015/04/20 PHP
PHP+sqlite数据库操作示例(创建/打开/插入/检索)
2016/05/26 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
让input框实现类似百度的搜索提示(基于jquery事件监听)
2014/01/31 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
2014/08/30 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
js实现图片轮播效果
2015/12/19 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
jQuery实现节点的追加、替换、删除、复制功能示例
2017/07/11 jQuery
新手快速上手webpack4打包工具的使用详解
2019/01/28 Javascript
如何在 Vue 中使用 JSX
2021/02/14 Vue.js
[15:46]教你分分钟做大人——沙王
2015/03/11 DOTA
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python3.6环境安装+pip环境配置教程图文详解
2019/06/20 Python
python之列表推导式的用法
2019/11/29 Python
Python守护进程实现过程详解
2020/02/10 Python
Python爬虫入门有哪些基础知识点
2020/06/02 Python
keras中的History对象用法
2020/06/19 Python
详解python安装matplotlib库三种失败情况
2020/07/28 Python
pandas按条件筛选数据的实现
2021/02/20 Python
销售经理工作职责范文
2013/12/03 职场文书
财务会计专业求职信范文
2013/12/31 职场文书
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
致800米运动员广播稿(10篇)
2014/10/17 职场文书
自主招生英文自荐信
2015/03/25 职场文书
2015年远程教育工作总结
2015/05/20 职场文书
2019年妇科护士的自我鉴定(3篇)
2019/09/26 职场文书
工厂无线对讲系统解决方案
2022/02/18 无线电
Spring Boot 使用 Spring-Retry 进行重试框架
2022/04/24 Java/Android