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 相关文章推荐
如何取得中文输入的真实长度?
Jun 24 Javascript
js和jquery对dom节点的操作(创建/追加)
Apr 21 Javascript
浅析JavaScript中的类型和对象
Nov 29 Javascript
Jquery获取元素的父容器对象示例代码
Feb 10 Javascript
jquery中radio checked问题
Mar 16 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
简单谈谈node.js 版本控制 nvm和 n
Oct 15 Javascript
JavaScript中的各种操作符使用总结
May 26 Javascript
Vuejs第十三篇之组件——杂项
Sep 09 Javascript
JS代码实现电脑配置检测功能
Mar 21 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
vue路由权限校验功能的实现代码
Jun 07 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 5.3.x 的strtotime() 时区设定 警告信息修复
2013/08/05 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
codeigniter中view通过循环显示数组数据的方法
2015/03/20 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
Yii控制器中filter过滤器用法分析
2016/07/15 PHP
PHP 7.0新增加的特性介绍
2017/06/08 PHP
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
JSON格式的键盘编码对照表
2015/01/29 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
Node连接mysql数据库方法介绍
2017/02/07 Javascript
Bootstrap选项卡学习笔记分享
2017/02/13 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
JavaScript在控件上添加倒计时功能的实现代码
2017/07/04 Javascript
Vue.js 单页面多路由区域操作的实例详解
2017/07/17 Javascript
angular动态删除ng-repaeat添加的dom节点的方法
2017/07/20 Javascript
js 获取json数组里面数组的长度实例
2017/10/31 Javascript
JavaScript中的一些隐式转换和总结(推荐)
2017/12/22 Javascript
10分钟上手vue-cli 3.0 入门介绍
2018/04/04 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
小程序实现单选多选功能
2018/11/04 Javascript
Vue路由守卫之路由独享守卫
2019/09/25 Javascript
JavaScript实现图片伪异步上传过程解析
2020/04/10 Javascript
Python subprocess模块功能与常见用法实例详解
2018/06/28 Python
python 执行终端/控制台命令的例子
2019/07/12 Python
Django 查询数据库并返回页面的例子
2019/08/12 Python
python中调试或排错的五种方法示例
2019/09/12 Python
CSS3 transform的skew属性值图文详解
2014/07/21 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
人力资源经理自我评价
2014/01/04 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
居住证明范文
2015/06/17 职场文书
2016年教师节贺卡寄语
2015/12/04 职场文书
利用 JavaScript 构建命令行应用
2021/11/17 Javascript