美文网首页
面试题整理

面试题整理

作者: 易冷zzz | 来源:发表于2018-04-26 14:44 被阅读0次
1.javascript的window.onload事件与jQuery的$(document).ready方法有什么区别?

       咋一看这还不简单?onload肯定是等DOM结构加载完,媒体文件图片等加载完才开始执行function里面的操作,而ready仅仅是在DOM结构加载完以后就开始执行function里面的代码的。

2.原生javascript如何实现jQuery的ready方法?

话说这个问题还真被难住了,现记录下答案:

function ready(fn){  
    if(document.addEventListener){   //标准浏览器  
        document.addEventListener('DOMContentLoaded',function(){  
            //注销事件,避免反复触发  
            document.removeEventListener('DOMContentLoaded',arguments.callee,false); 
            //执行函数   
            fn();
        },false);  
    }else if(document.attachEvent){   //IE浏览器  
        document.attachEvent('onreadystatechange',function(){  
            if(document.readyState=='complete'){  
                document.detachEvent('onreadystatechange',arguments.callee);  
                //执行函数   
                fn();  
            }  
        });  
    }  
}

3.如何将一个不定宽高的div水平垂直都居中?

思路1:利用margin负间距居中(应该是当前比较流行的)

div.child{
  position:absolute;
  left:50%;
  top:50%;
}
然后利用js获取div宽高(w,h);
$("div.child").css({
    "margin-left":-w/2,"margin-top":-h/2
});

思路2:利用margin:auto实现绝对定位元素的居中

//假设宽高为400px  200px,其他值也是可以的
.child{
    width: 400px;
    height: 200px;
    background: green;
    position:absolute;
     left:0;
     top: 0;
     bottom: 0;
     right: 0;
    margin: auto;
}

思路3:利用transform变形

.child{
  width: 400px;
  height: 200px;
  background: green;
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);//相对自己的50%
}

思路4:利用表格思想给父元素设置display:table-cell;div作为表格内容

          .grandparent{
                display: table;
                width: 100%;
                height: 600px;
            }
            .parent{
                text-align: center;
                vertical-align: middle;
                display: table-cell;
            }
            div{
                width: 200px;
                height: 200px;
                background: green;
                display: inline-block;
              } 

思路5:父元素display:flex布局

       .parent{
             height:600px;
             display:flex;
             justify-content:center;//水平居中
             align-items:center;//垂直居中
        }
        .child{
            background: green;
            width: 200px;
            height: 200px;
        }
4.ajax跨域问题

4.1 何为跨域

跨域是指从一个域名的网页去请求另一个域名的资源。协议(http&https)、端口(80&81)、域名(baidu&google)、二级域名(news&sports)不相同,都为跨域。

4.2跨域请求数据的几种方式

1. iframe + window.name
2.iframe + window.postMessage
3.JSONP
4.CORS(header:(Access-Control-Allow-Origin : *)
5.Nginx反向代理

第一种方法:Nginx反向代理
第二种方法:CORS
第三种方法:第二种方法:[JSONP]方式可以携带cookie,但是只能是GET方法

5.如何判断数据类型为数组?
$.isArray([]); // true

[].constructor === Array; // true

[] instanceof Array; // true

typeof [] === 'object' && [].length === 0 // true

Array.isArray([]); // true
6.原生javascript实现ajax请求
<form id="info" method="post">
  <div class="br">
    <lable>宝贝昵称:</lable>
    <input type="text" id="baby-name" name="baby-name">
    <lable>联系电话:</lable>
    <input type="text" id="phone" name="phone">
  </div>
  <div class="br">
     <lable>照片描述:</lable>
    <input type="text" id="photo-content" name="photo-content">
   </div>
</form>

/*序列化表单数据*/
    function serialize(form){        
        var parts = new Array();
        var field = null;
        for (var i=0, len=form.elements.length; i < len; i++){
            field = form.elements[i];
            parts.push(encodeURIComponent(field.name) + "=" + 
            encodeURIComponent(field.value));                
        }        
        return parts.join("&");
    }
    /*xhr对象向服务器传数据*/
   function submitData(){
            var xhr = new XMLHttpRequest();       
            xhr.onreadystatechange = function(){
                if (xhr.readyState == 4){
                    if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){
                        alert(xhr.responseText);
                        var data = JSON.parse(xhr.responseText);
                        console.log(data);
                    } else {
                        alert("Request was unsuccessful: " + xhr.status);
                    }
                }
            };
            xhr.open("post", "db.jsp", true);
            xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");//使用XHR来模仿表单提交,加一个请求头部。
            var form = document.getElementById("info");            
            xhr.send(serialize(form));
        }

相关文章

  • 2017 Android 面试题分享整理

    第174期:2017 Android 面试题分享整理 深度讨论 2017 Android 面试题分享整理 (欢迎评...

  • 面试题

    关注的面试题文集 Android面试题整理 Android工程师面试题大全 Android 面试题总结之Andro...

  • 日记-2020-07-27

    早上:学习vim中午:休息白天: 配合测试 修改批量查询bug 整理面试题-多线程2 整理面试题-JVM部分 待完成

  • Android面试总结二

    参考文章 40个Android面试题Java面试题集Android名企面试题及知识点整理Android面试题收集较...

  • 经典面试100题 - 持续更新中

    打算整理100道经典面试题,整理出来的链接都会附录在下面。 经典面试题1:图片占多少内存经典面试题2:时针和分针经...

  • python面试题整理

    python面试题整理 110道Python面试题(真题)[https://zhuanlan.zhihu.com/...

  • 作者心血 整理阿里p4-p6面试题(附带答案)

    前面已经看过我整理的187到面试题合集 最近收集阿里p4-p6面试题整理,筛选比较大众一点的25到面试题(ps:附...

  • 整理阿里p4-p6面试题(附带答案)

    前面已经看过我整理的187到面试题合集 最近收集阿里p4-p6面试题整理,筛选比较大众一点的25到面试题(ps:附...

  • [转]安卓面试题合集

    前几天整理了Java面试题集合,今天再来整理下Android相关的面试题集合.如果你希望能得到最新的消息,可以关注...

  • Android客户端面试题详解;持续更新

    前言 本篇面试题是整理单独整理的一篇客户端面试题,如果有补充非常感谢在评论区留言。更多其它一线互联网面试题请点击获...

网友评论

      本文标题:面试题整理

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