JS 基础知识面试题笔记2

主要是DOM,Ajax,BOM,存储和事件绑定

@[TOC] DOM操作
DOM,文档对象模型
题目:
DOM属于哪种数据结构?
答:树状结构
DOM操作的常用API
答:节点操作(插入节点,删除节点,移动节点,获取节点这些)和结构操作
attr和Property的区别
property修改对象属性,不会体现到html结构中
attribute修改html属性,会改变html结构
两者都可能引起DOM重新渲染,使用中尽量用property;
一次性插入多个DOM节点,考虑性能?
创建一个空的文档片段,然后把这多个都插入到这个空的文档片段中,最后再把这个文档片段插入到DOM节点树上。

知识点分析:
获取DOM节点:

document.getElementById("id");//通过id获取节点;
	document.getElementByClassName("className")//通过className获取节点集合;
	document.getElementByTagName("div");//通过标签名获取节点集合;
	document.querySelectorAll("p")//通过选择器获取节点集合

		

querySelectorAll选择器和TagName有什么区别?

	attribute 修改的标签的属性:
p1.setAttribute("data-name","imooc");//可以设置dom元素属性
console.log(p1.getAttribute("data-name"));//会打印出imooc
**property**:
		意思是我们能通过DOM的获取节点进行属性的一个操作,比如获取到P节点后,可以设置p.style.width  设置p的 宽;它本身不是api 名字,只是一种属性操作形式的名字叫法。或者比如我们拿取了p标签节点,可以打印一下这个标签的className 看看
		
console.log(p1.className); //如果p1标签设置了red色,那会打印出red

还有个nodeName,p1.nodeName  不常用的这个,打印出来是p,它是告诉你这个是什么标签的意思。

在这里插入图片描述
平常工作中尽量用property处理节点,就是p.style.color=“red”;这种写法。

DOM节点操作:
新增/插入节点

新增节点:
const div1=document.getElementById("div1");//获取div1节点
const div2=document.getElementById("div2");  //获取div节点2
const p1=document.createElement("p");//创建一个p节点 名叫p1
p1.innerHTML=`一段文字`    //设置p1节点的内容
div1.appendChild(p1);   //在div1节点里面的末尾插入p1节点。
//移动节点,;就是 div1里面有一个节点,我们获取到叫,管它叫做p1吧。然后在div2里面appendChild(p1);就会把它移过去
div2.appendChild(p1);//此时p1就会移动到了div2里面。

获取父元素:
console.log(p1.parentNode);   //打印出来的就是div2;上面移动了,所以p1现在的父元素是div2;

获取子元素列表(获取到的是集合):

box.lastElementChild  可以获取到它的子节点;
box.children 可以获取到它的所有子节点;
box.parentNode 可以获取到它的父节点;
box.nextElementSibling 可以获取到下一个兄弟节点;
box.previousElementSibling 可以获取到它的上一个兄弟节点。
Box.firstElementChildren 第一个子节点;
 

删除节点:
removeChild() 方法可以从DOM树中删除一个子节点;方法是 父节点.removeChild(要删除的子节点)

DOM性能如何优化
DOM操作要避免频繁的操作,将频繁的操作改为一次性操作,对DOM查询做保存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值