面试4(每日打卡)
13. 添加 删除 替换 插入到某个接点的方法
添加:$("div").appendChild("li")
删除:$("div").removeChild("li")
替换:$("div").replaceChild("li")
插入:$("div").insertChild("li")❌ 获取的dom元素.insertBefore(新元素,获取的dom元素) 把新的元素插入到获取的dom元素.的前面(新的,就的)
1》创建新的节点:
document.createElement("div")//创建一个具体的元素
document.createTextNode()//创建一个文本节点
元素创建的三种方式:document.write("标签的代码及内容"),对象.innerHTML="标签及内容",document.createElement("标签名")
2》查找节点
document.getElementsByTagName()//通过标签名
document.getElementsByClassName()//通过类名
document.getElementById()//通过id标识名
document.querySelector("#id")
document.querySelectorAll(".class")
14. 解释jsonp的原理,以及为什么不是真正的ajaxs
jsonp是动态创建script标签,回调函数;
ajax是页面无刷新请求数据操作
15. document onload 和document ready的区别
前者是js的,要等页面加载完毕才执行里面的代码,包括等待图片的加载;
后者是jquery的,要要等页面加载完毕后才执行里面的代码,但是不等待图片的加载;
答案:前者是在结构和样式,外部js以及图片加载完才执行内部的js代码;
后者是 dom树创建完就执行的方法,原生中没有这个方法,jquery中的;
16. ”==”和“===”的不同
== 只要值相同就可以了
===要类型,值都要相等
答案:==会自动转换类型,再判断是否相等
后者不会自动转换类型,直接拿去比较
17. 函数声明与函数表达式的区别?
不知道哦
答案:在javaScript中,解析器会率先读取函数声明,并使用其在执行任何代码之前可以用(可以访问),而函数表达式,则必须等到解析器执行到它所在的代码行,才会被真正解析执行。
区别就是:函数声明率先执行,函数表达式按代码顺序执行。
18. 对作用域上下文和this的理解,看下列代码:
var User = {
count: 1,
getCount: function() {
return this.count;
}
};
console.log(User.getCount()); // what?
var func = User.getCount;
console.log(func()); // what?
问两处console输出什么?为什么?
1 ,undefined✔
第一个是因为 是有了user这个对象,在user.getCount,要到前面去找定义的count;
第二个是因为:是将user中的函数拿出来了,直接赋值给func,没有定义的count,就是undefined;
20. 当一个DOM节点被点击时候,我们希望能够执行一个函数,应该怎么做?
1》box.onclick=function(){}//直接绑定事件
2》box.addEventListener("click",function(){},false);//绑定监听事件
3》<button onclick="xxx()"></button>
21. Javascript的事件流模型都有什么?
冒泡事件:从内到外,触发事件❌
答案:“事件冒泡”:事件开始由最具体的元素接受,然后逐级向上传播,(从里到外);
“事件捕捉”:事件由最不具体的节点先接收,然后逐级向下,一直到最具体的,(从外到里);
“DOM事件流”:3个阶段:事件捕捉,目标阶段,事件冒泡
22. 看下列代码,输出什么?解释原因。
var a = null;
alert(typeof a);
Onject 因为定义a,没有赋值✔
答案:null是一个只有一个值的数据类型,这个值就是null。标识一个空指针对象,所以用typeof检测会返回object
23. 判断字符串以字母开头,后面可以是数字,下划线,字母,长度为6-30
str.test(/^[a-zA-Z]\w{5,29}$/)
25. javaScript的2种变量范围有什么不同?
全局变量:在这个页面中都有效;✔
局部变量:在定义这个局部变量的函数里面有效 ✔
答案:全局变量:当前页面有效;局部变量:函数方法内有效
27. new操作符具体干了什么呢?
创建了一个新的对象❌
答案:(1).创建一个空对象,并且this变量引用该对象,同时还继承了该函数的原型。
(2).属性和方法被加入到this引用的对象中
(3).新创建的对象由this所引用,并最后隐式的返回this
31. 希望获取到页面中所有的checkbox怎么做?(不使用第三方框架)
var Inputs =document.getElemrntsByTag("input");//获取页面中所有的input标签
var CheckBoxs=[];//定义一个存放checkboxs的空数组
for(var i = 0; i < Inputs.length ; i++ ){
if(Inputs[i].type=="checkboxs"){
CheckBoxs.push(Inputs[i]);//存放
}