为什么要学习DOM? 因为:要改变页面的某个东西,JavaScript就需要获得对HTML文档中所有元素进行访问的入口。这个入口,连同对 HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过DOM来获得的. 包括:document对象常用属性,document对象常用方法,查询元素,创建元素等
题目1: dom对象的innerText和innerHTML有什么区别?
<div>
<p>
123
<span>456</span>
</p>
</div>
外层div的innerText返回内容是: "123456"
innerHTML返回内容是: "<p>123<span>456</span></p>"
innerText
:是一个可写属性,返回元素内包含的文本内容,在多层次的时候会按照元素由浅到深的顺序拼接其内容.
innerHTML
:属性作用和innerText类似,但是不是返回元素的文
本内容,而是返回元素的HTML结构
题目2: elem.children和elem.childNodes的区别?
Element.children
:子元素列表(HTMLCollection)
HTMLCollection: 返回元素的子元素集合,但是它只返回HTML节点.Element.childNodes
:子元素列表(NodeList)
NodeList: 一个节点的集合,既可以包含元素和其他节点(注释节点、文本节点等).
题目3:查询元素有几种常见的方法?ES5的元素选择方法是什么?
getElementById
方法返回匹配指定ID属性的元素节点。如果没有发现匹配的节点,则返回null。这也是获取一个元素最快的方法.getElementsByClassName
方法返回一个类似数组的对象(HTMLCollection类型的对象),包括了所有class名字符合指定条件的元素(搜索范围包括本身)getElementsByTagName
方法返回所有指定标签的元素(搜索范围包括本身)。返回值是一个HTMLCollection对象getElementsByName
方法用于选择拥有name属性的HTML元素ES5方法
: querySelector();querySelectorAll();
题目4:如何创建一个元素?如何给元素设置属性?如何删除属性
-
createElemen
t方法用来生成HTML元素节点 -
setAttribute()
方法用于设置元素属性 -
removeAttribute()
用于删除元素属性
题目5:如何给页面元素添加子元素?如何删除页面元素下的子元素?
-
appendChild()
方法在元素末尾添加元素 -
insertBefore()
方法在某个元素之前插入元素 -
removeChild()
方法可用于删除某元素下的子元素 -
replaceChild()
接受两个参数:要插入的元素和要替换的元素
题目6: element.classList有哪些方法?如何判断一个元素的 class 列表中是包含某个 class?如何添加一个class?如何删除一个class?
-
add(class1, class2, ...)
//在元素中添加一个或多个类名。如果指定的类名已存在,则不会添加 -
toggle()
支持一个类名字符串参数,若类名列表中有此类名,移除之,并返回false; 如果没有,则添加该类名,并返回true. -
contains(class):
//返回布尔值,判断指定的类名是否存在 -
classList.add(''):
添加一个class -
classList.remove('')
:删除一个class
题目7: 如何选中如下代码所有的li元素? 如何选中btn元素?
<div class="mod-tabs">
<ul>
<li>list1<li>
<li>list2<li>
<li>list3<li>
</ul>
<button class="btn">点我</button>
</div>
//选中所有的li元素
document.getElementsByTagName('li')或document.querySelectorAll('li')
//选中btn元素
document.getElementsByClassName('btn')或
getElementsByClassName('btn')
document.querySelector('.btn')