码迷,mamicode.com
首页 > Web开发 > 详细

关于js封装框架类库的那些事(一)

时间:2016-04-10 01:03:09      阅读:367      评论:0      收藏:0      [点我收藏+]

标签:

  • 选择器模块之传统做法

        var tag = function (tag){
            return document.getElementsByTagName(tag);
        }
        var id = function (id){
            return document.getElementById(id);
        }
        var className = function (className){
            return document.getElementsByClassName(className);
        }    
  • 由浅入深之tag方法

 这是html部分代码

技术分享
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        <style type="text/css">
            div, p {
                width: 200px; 
                height:50px; 
                border:1px dashed red; 
                margin: 10px 0;
            }
        </style>
    </head>
    <body>
        <div></div>
        <div></div>
        <p></p>
        <p></p>
    </body>
View Code
//例如给div盒子添加背景色我们可能会这么做
        var divs = tag(‘div‘);
        var each = function (arr){
            for(var i = 0;i< arr.length;i++){
                arr[i].style.backgroundColor = ‘pink‘;
            }
        }
        each(divs);
        //也可能会这么做
        var list = tag(‘div‘);
        var each = function (arr,fn){
            for(var i = 0;i<arr.length;i++){
                if(fn.call(arr[i],i,arr[i]) === false ){//等于false时,终止循环
                    break;
                }
            }
        }
        each(list,function(){
            this.style.backgroundColor = ‘yellow‘;
        })
技术分享
//上式的fn.call(arr[i],i,arr[i]) === false,下面函数也用到这种调用方式,可以做下比较
        var arr = [ 1, 2, 3, 4, 3, 5];
        var each = function ( arr, fn ) {
            for ( var i = 0; i < arr.length; i++ ) {
                if ( fn( i, arr[ i ] ) === false ) {
                    break;
                }
            }
        };
        
        var index = -1;
        each( arr, function ( i, v ) {    
            if ( v === 3 ) {
                index = i;
                return false;//若是break 遍历不会终止 直到遍历完
            }
        } );
        console.log( index );//2
View Code

/*var tag = function (tag){
   return document.getElementsByTagName(tag);
  }*/
  //以上这种写法的缺点是每次获得元素后又要返回,以至于造成浏览器性能的损耗
  //为了简化开发,可以将获得的数组合并到一个数组中,这也是jq中所用到的

var getTag = function ( tag, results ) {
            results = results || [];
            results.push.apply( results, document.getElementsByTagName( tag ) );
            return results;
        };
        var list = getTag(‘div‘);
            list = getTag(‘p‘,list);//如果再获得p标签,可以这么写
        var each = function (arr,fn){
            for(var i = 0;i<arr.length;i++){
                if(fn.call(arr[i],i,arr[i]) === false ){//等于false时,终止循环
                    break;
                }
            }
        }
        /*each(list,function(){
            this.style.backgroundColor = ‘lightgreen‘;
        })*/
        each(getTag(‘p‘,getTag(‘div‘)),function(){
            this.style.backgroundColor = ‘lightgreen‘;
        })

 

关于js封装框架类库的那些事(一)

标签:

原文地址:http://www.cnblogs.com/goweb/p/5373156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!