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 相关文章推荐
JavaScript 学习笔记(十一)
Jan 19 Javascript
js,jQuery 排序的实现代码,网页标签排序的实现,标签排序
Apr 27 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
Dec 25 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
director.js实现前端路由使用实例
Feb 03 Javascript
js实现的鼠标滚轮滚动切换页面效果(类似360默认页面滚动切换效果)
Jan 27 Javascript
vuejs前后端数据交互之从后端请求数据的实例
Aug 11 Javascript
Node.js中的不安全跳转如何防御详解
Oct 21 Javascript
使用webpack编译es6代码的方法步骤
Apr 28 Javascript
Vue-Cli项目优化操作的实现
Oct 27 Javascript
关于vue利用postcss-pxtorem进行移动端适配的问题
Nov 20 Javascript
解决vue自定义组件@click点击失效问题
Apr 30 Vue.js
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
3.从实例开始
2006/10/09 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
javascript attachEvent和addEventListener使用方法
2009/03/19 Javascript
javascript笔记 String类replace函数的一些事
2011/09/22 Javascript
js jq 单击和双击区分示例介绍
2013/11/05 Javascript
jquery带下拉菜单和焦点图代码分享
2015/08/24 Javascript
Angular.js中用ng-repeat-start实现自定义显示
2016/10/18 Javascript
浅谈jQuery中的eq()与DOM中element.[]的区别
2016/10/28 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
基于 webpack2 实现的多入口项目脚手架详解
2017/06/26 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
小程序ios音频播放没声音问题的解决
2018/07/11 Javascript
Angular刷新当前页面的实现方法
2018/11/21 Javascript
从源码里了解vue中的nextTick的使用
2018/11/22 Javascript
vue3实现v-model原理详解
2019/10/09 Javascript
一步步解析Python斗牛游戏的概率
2016/02/12 Python
Python字符串处理实现单词反转
2017/06/14 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
Python+opencv 实现图片文字的分割的方法示例
2019/07/04 Python
python实现socket+threading处理多连接的方法
2019/07/23 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
CSS3 仿微信聊天小气泡实例代码
2017/04/05 HTML / CSS
80年代复古T恤:TruffleShuffle
2018/07/02 全球购物
Nasty Gal英国:美国女性服饰销售网站
2021/03/02 全球购物
精彩的英文自荐信
2014/01/30 职场文书
党员检讨书
2014/10/13 职场文书
公司回复函格式
2015/07/14 职场文书
导游词之天津盘山
2019/11/01 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
为什么在foreach循环中JAVA集合不能添加或删除元素
2021/06/11 Java/Android
浅谈redis的过期时间设置和过期删除机制
2022/03/18 MySQL