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 相关文章推荐
JQuery实现自定义对话框的代码
Jun 15 Javascript
可插入图片的TEXT文本框
Dec 27 Javascript
JavaScript中提前声明变量或函数例子
Nov 12 Javascript
H5移动端图片压缩上传开发流程
Nov 09 Javascript
JavaScript使用简单正则表达式的数据验证功能示例
Jan 13 Javascript
关于Node.js的events.EventEmitter用法介绍
Apr 01 Javascript
jQuery Plupload上传插件的使用
Apr 19 jQuery
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
Jul 07 Javascript
利用Console来Debug的10个高级技巧汇总
Mar 26 Javascript
JS数组去重的6种方法完整实例
Dec 08 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
Jul 31 Javascript
uniapp微信小程序实现一个页面多个倒计时
Nov 01 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 数组的一个悲剧?
2011/05/11 PHP
PHP的mysqli_query参数MYSQLI_STORE_RESULT和MYSQLI_USE_RESULT的区别
2014/09/29 PHP
PHP结合jQuery插件ajaxFileUpload实现异步上传文件实例
2020/08/17 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
iis 7下安装laravel 5.4环境的方法教程
2017/06/14 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
php桥接模式应用案例分析
2019/10/23 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
2013/02/06 Javascript
JavaScript判断密码强度(自写代码)
2013/09/06 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
2013/11/25 Javascript
javascript中eval函数用法分析
2015/04/25 Javascript
JavaScript计划任务后台运行的方法
2015/12/18 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
Angular2关于@angular/cli默认端口号配置的问题
2017/07/15 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
vue组件表单数据回显验证及提交的实例代码
2018/08/30 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
Python编程中time模块的一些关键用法解析
2016/01/19 Python
python中数据爬虫requests库使用方法详解
2018/02/11 Python
python pip源配置,pip配置文件存放位置的方法
2019/07/12 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
python实现FTP循环上传文件
2020/03/20 Python
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
2016/04/28 面试题
年终自我鉴定
2013/10/09 职场文书
中药专业大学生医药工作求职信
2013/10/25 职场文书
项目投资建议书
2014/05/16 职场文书
土建施工员岗位职责
2014/07/16 职场文书
2014基层党员批评与自我批评范文
2014/09/24 职场文书
工作骂脏话检讨书
2014/10/05 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
交警失职检讨书
2015/01/26 职场文书
《西门豹》教学反思
2016/02/23 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js