美文网首页
网易微专业之《前端工程师》学习笔记(17)-DOM单元测试主观题

网易微专业之《前端工程师》学习笔记(17)-DOM单元测试主观题

作者: 荷小音 | 来源:发表于2016-02-16 19:42 被阅读2837次

    一(10分)
    getElementsByClassName函数实现获取指定类名的子元素列表,语法如下:

    var elements = getElementsByClassName(element, names);
    

    使用示例如下:
    如果html元素

    <div id="example">
      <p id="p1" class="aaa bbb"/>
      <p id="p2" class="aaa ccc"/>
      <p id="p3" class="bbb ccc"/>
    </div>
    
    

    对应的DOM节点为example, 那么
    getElementsByClassName(example, “aaa”); 运行结果为包含id为p1, id为p2的元素列表
    getElementsByClassName(example, “bbb ccc”);运行结果为包含id为p3的元素列表
    getElementsByClassName(example, “ccc bbb”);运行结果为包含id为p3的元素列表
    请实现getElementsByClassName方法,要求浏览器兼容。

    解:我是重写的,不是做兼容。

    function getElementsByClassName(element, names){
    
                var children = element.getElementsByTagName('*');
            var elements = new Array();
            var child, attr_class_name, flag;
            names = names.split(' ');
            for (var i = 0; child = children[i]; i++) {
                attr_class_name = ' ' + child.className + ' ';
                flag = true;
                for (var j = 0, name; name = names[j]; j++) {
                    if (attr_class_name.indexOf(' ' + name + ' ') == -1) {
                        flag = false;
                        break;
                    }
                }
                if (flag) {
                    elements.push(child);
                }
            }
            return elements;
    
                 }
              
    
              getElementsByClassName(example, "aaa bbb");
    
    

    二(8分)
    函数getCookies()解析document.cookie, 并返回一个对象, 该对象的属性名为cookie的name,属性值为cookie的value。请写出该函数的实现代码

    解:

     function getCookies() { 
              
                  var cookie={};
                  var all= document.cookie;
                  if(all=="")
                    return cookie;
                  var list =all.split(";");
                      for(var i=0;i<list.length;i++){
    
                        var item =list[i];
                        var p=item.indexOf("=");
                        var name=item.substring(0,p);
                        name=decodeURLComponent(name);
                        var value=item.substring(p+1);
                        value=decodeURLComponent(value);
                        cookie[name]=value;
    
    
    
                      }
    
                return cookie;
                }
    
    getCookies()
    

    三(10分)
    函数fadeout(element)实现了元素的淡出效果(即透明度从1变到0),动画时间为1秒钟。用定时器setInterval实现动画,写出函数fadeout的实现代码:

    解:

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>淡出效果</title>
    <style>
    
    #demo div.box {float:left;width:31%;margin:0 1%}
    #demo div.box h2{margin-bottom:10px}
    #demo div.box h2 input{padding:5px 8px;font-size:14px;font-weight:bolder}
    #demo div.box div{text-indent:10px; line-height:22px;border:2px solid #555;padding:0.5em;overflow:hidden}
    </style>
    
    </head>
    <body>
    
        <div id="demo">    
            <div class="box">
                <h2><input type="button" value="点击淡出" /></h2>
                <div id="fadeOut">
                    <p>函数fadeout(element)实现了元素的淡出效果(即透明度从1变到0),动画时间为1秒钟。用定时器setInterval实现动画</p>
                </div>
                <p>淡出效果</p>
            </div>    
        </div>
    
    </body>
    <script>
    window.onload = function(){
     
    
    //淡出
    function fadeout(elem){
        var val = 1;  
        var timer = null; 
        timer = setInterval(function() { 
                setOpacity(elem, val);
                val -= 0.1;
                if(val<0){clearInterval(timer);} 
                                       }, 100); //100毫秒*10次=1秒     
        //设置opacity 
        function setOpacity(element,value){
         element.filters ? element.style.filter ='alpha(opacity='+100*value+')' : element.style.opacity =value;
        }
    }
    
        
    /////////////////////////////////////////////////////////////
    
    
    
                             //  测  试   
          
    
          
        var btn = $('demo').getElementsByTagName('input')[0];
        
    
        btn.onclick = function(){ fadeout($('fadeOut')); }
        
        
        //测试工具
        function $(name){return document.getElementById(name);}
     
        
        
        
    }
    </script>
    </html>
    

    相关文章

      网友评论

          本文标题:网易微专业之《前端工程师》学习笔记(17)-DOM单元测试主观题

          本文链接:https://www.haomeiwen.com/subject/zxvpkttx.html