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 document.images实例
May 27 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
Jquery Validate 正则表达式实用验证代码大全
Aug 23 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
avalonjs实现仿微博的图片拖动特效
May 06 Javascript
Reactjs实现通用分页组件的实例代码
Jan 19 Javascript
360doc网站不登录就无法复制内容的解决方法
Jan 27 Javascript
ionic grid(栅格)九宫格制作详解
Jun 30 Javascript
关于vue.js中实现方法内某些代码延时执行
Nov 14 Javascript
js滚轮事件 js自定义滚动条的实现
Jan 18 Javascript
JavaScript实现捕获鼠标坐标
Apr 12 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 Undefined index报错的修复方法
2011/07/17 PHP
PHP程序员常见的40个陋习,你中了几个?
2014/11/20 PHP
Thinkphp实现短信验证注册功能
2016/10/18 PHP
php验证码生成器
2017/05/24 PHP
safari下载文件自动加了html后缀问题
2018/11/09 PHP
PHP7新特性
2021/03/09 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
javascript tips提示框组件实现代码
2010/11/19 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
jquery操作select大全
2014/04/25 Javascript
移动Web中图片自适应的两种JavaScript解决方法
2015/06/18 Javascript
jQuery on()方法绑定动态元素的点击事件无响应的解决办法
2016/07/07 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
微信小程序 video组件详解
2016/10/25 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
基于js中style.width与offsetWidth的区别(详解)
2017/11/12 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
vue中mint-ui的使用方法
2018/04/04 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
基于postman获取动态数据过程详解
2020/09/08 Javascript
基于循环神经网络(RNN)实现影评情感分类
2018/03/26 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
浅谈python3发送post请求参数为空的情况
2018/12/28 Python
python名片管理系统开发
2020/06/18 Python
五种Python转义表示法
2020/11/27 Python
HTML5获取当前地理位置并在百度地图上展示的实例
2020/07/10 HTML / CSS
普通院校学生的自荐信
2013/11/27 职场文书
会计自荐书
2013/12/02 职场文书
车祸赔偿收入证明
2014/01/09 职场文书
社区工作者演讲稿
2014/05/23 职场文书
中华在我心中演讲稿
2014/09/13 职场文书
上课迟到检讨书范文
2015/05/06 职场文书
如何利用js在两个html窗口间通信
2021/04/27 Javascript