1.dom对象的innerText和innerHTML有什么区别?
- innerText:文本格式插入
- innerHTML:支持HTML插入,解析HTML标签
2.elem.children和elem.childNodes的区别?
- element.children 获取的是当前元素的所有子节点元素(不包括文本元素),children返回的是HTMLCollection类型
- element.childNodes 获取的是当前元素的有所子元素(节点元素和文本元素),childNodes返回的是NodeList类型
3.查询元素有几种常见的方法?ES5的元素选择方法是什么?
document方法:
- document.getElementById()
getElementById方法返回匹配指定id属性的元素节点。如果没有发现匹配的节点,则返回null。
这个方法只能在document对象上使用,不能在其他元素节点上使用。 - document.getElementsByTagName()
document.getElementsByTagName方法返回所有指定HTML标签的元素,返回值是一个类似数组的HTMLCollection对象,可以实时反映HTML文档的变化。如果没有任何匹配的元素,就返回一个空集。不仅可以在document对象上调用,也可以在任何元素节点上调用。 - docuemnt.getElementsByClassName()
document.getElementsByClassName方法返回一个类似数组的对象(HTMLCollection实例对象),包括了所有class名字符合指定条件的元素,元素的变化实时反映在返回结果中。不仅可以在document对象上调用,也可以在任何元素节点上调用。 - document.getElementsByName()
document.getElementsByName方法用于选择拥有name属性的HTML元素(比如<form>、<radio>、<img>、<frame>、<embed>和<object>
等),返回一个类似数组的的对象(NodeList对象的实例),因为name属性相同的元素可能不止一个。 - document.elementFromPoint
document.elementFromPoint方法返回位于页面指定位置最上层的Element子节点。
ES5的方法:
- document.querySelector()
document.querySelector方法接受一个CSS选择器作为参数,返回匹配该选择器的元素节点。如果有多个节点满足匹配条件,则返回第一个匹配的节点。如果没有发现匹配的节点,则返回null - document.querySelectorAll()
document.querySelectorAll方法与querySelector用法类似,区别是返回一个NodeList对象,包含所有匹配给定选择器的节点。
4.如何创建一个元素?如何给元素设置属性?如何删除属性
- document.createElement()
document.createElement方法用来生成网页元素节点。
var newDiv = document.createElement('div');```
createElement方法的参数为元素的标签名,即元素节点的tagName属性,对于 HTML 网页大小写不敏感,即参数为div或DIV返回的是同一种节点。如果参数里面包含尖括号(即<和>)会报错。
<body>
<div id="div1" class='test'>ss</div>
<script charset="utf-8">
var body = document.getElementsByTagName('body')//获取节点
var newDiv = document.createElement('div')//创建元素
newDiv.setAttribute('id','xxx')//设置属性
var newContent = document.createTextNode('hello world') //创建文本节点
body[0].appendChild(newDiv)//插入节点
newDiv.appendChild(newContent) //插入文本节点
document.getElementById('div1').removeAttribute('class')//删除属性
</script>
</body>```
5.如何给页面元素添加子元素?如何删除页面元素下的子元素?
<body>
<div id="div1" class='test'>div1</div>
<div id="div2">div2</div>
<div id="div3">div3</div>
<div id="div4">div4</div>
<div id="div5">div5</div>
<script charset="utf-8">
var body = document.getElementsByTagName('body')
var newDiv = document.createElement('div')
newDiv.setAttribute('id','xxx')
var newContent = document.createTextNode('hello world')
body[0].appendChild(newDiv)//页面元素添加子元素
newDiv.appendChild(newContent)
document.getElementById('div1').removeAttribute('id')
body[0].removeChild(document.getElementById('div4'))//删除页面元素下的子元素
document.getElementById('div2').remove()//删除元素本身
</script>
</body>```
# 6.element.classList有哪些方法?如何判断一个元素的 class 列表中是包含某个 class?如何添加一个class?如何删除一个class?
- className属性用来读写当前元素节点的class属性。它的值是一个字符串,每个class之间用空格分割。
- classList属性则返回一个类似数组的对象,当前元素节点的每个class就是这个对象的一个成员。
#### classList对象有下列方法。
>add():增加一个class。
remove():移除一个class。
contains():检查当前元素是否包含某个class。
toggle():将某个class移入或移出当前元素。
item():返回指定索引位置的class。
toString():将class的列表转为字符串。
myDiv.classList.add('myCssClass');//添加一个class
myDiv.classList.add('foo', 'bar');//添加两个class
myDiv.classList.remove('myCssClass');//删除一个class
myDiv.classList.toggle('myCssClass'); // 如果myCssClass不存在就加入,存在就移除
myDiv.classList.contains('myCssClass'); // 返回 true 或者 false
myDiv.classList.item(0); // 返回第一个Class
myDiv.classList.toString();//将classList对象转换为字符串与.className效果相同
# 7.如何选中如下代码所有的li元素? 如何选中btn元素?
<div class="mod-tabs">
<ul>
<li>list1</li>
<li>list2</li>
<li>list3</li>
</ul>
<button class="btn">点我</button>
</div>
<script>
var liAll = document.getElementsByTagName('li')//选中所有li元素生产类数组对象
var btn = document.getElementsByClassName('btn')//选中btn元素
</script>