题目1: dom对象的innerText和innerHTML有什么区别?
innerText是一个可写属性,返回元素内包含的文本内容,在多层次的时候会按照元素由浅到深的顺序拼接其内容。
innerText 从起始位置到终止位置的内容, html标签都被转义后保存.
简单场景:如果输入框中有标签的话,可以用innerText转义,获取内容
innerHTML属性作用和innerText类似,但是不是返回元素的文本内容,而是返回元素的HTML结构,在写入的时候也会自动构建DOM。
innerHTML 获取从对象的起始位置到终止位置的全部内容,包括Html标签
题目2: elem.children和elem.childNodes的区别?
children是Element的属性,childNodes是Node的属性,
- children:
非标准的,它返回指定元素的子元素集合。经测试,它只返回HTML节点,甚至不返回文本节点
<div id="open">
<h1>这是一张图</h1>
<img src="" alt="img">
<button>open</button>
</div>
var open= document.getElementById('open');
var d=open.children;
for(var i=0; i<d.length;i++){
console.log(d[i])
}
输出:
<h1>这是一张图</h1>
<img src="" alt="img">
<button>open</button>
- childNodes:
标准的,返回指定元素的子元素集合,包括HTML属性,所有属性,文本。可以通过nodeType来判断是哪v 种类型的节点
var open= document.getElementById('open');
var d=open.childNodes;
for(var i=0; i<d.length; i++){
console.log(d[i])
}
<h1>这是一张图</h1>
"hfhfhfhdhjshdfkshfksh"
<img src(unknown) alt="img">
<button>open</button>
节点类型 | NodeType |
---|---|
元素element | 1 |
属性attr | 2 |
文本text | 3 |
注释comments | 8 |
文档document | 9 |
补充:
Node(节点)是DOM层次结构中的任何类型的对象的通用名称,Node有很多类型,如元素节点,属性节点,文本节点,注释节点等,通过NodeType区分,常见的有:
节点类型 | NodeType |
---|---|
元素element | 1 |
属性attr | 2 |
文本text | 3 |
注释comments | 8 |
文档document | 9 |
题目3:查询元素有几种常见的方法?ES5的元素选择方法是什么?
document.getElementById()//返回特定的id名的元素
document.getElementByClassName() //返回文档中所有指定类名的元素集合,作为 NodeList 对象。
document.getElementByTagName()//获取所有指定标签的元素
document.getElementByName()//获取所有指定name属性值的元素
ES5 元素选择方式:
document.querySelector() //返回匹配指定条件的第一个元素,,
document.querySelectorAll()//返回符合指定条件的所有元素,得到一个NodeList对象
题目4:如何创建一个元素?如何给元素设置属性?如何删除属性
var node= document.createElement(' 标签名称 ');//创建一个html节点
node.setAtrribute('属性名','设置的属性值') //设置属性
node.removeAtrribute('属性名')
题目5:如何给页面元素添加子元素?如何删除页面元素下的子元素?
<div id="open">
<h1>这是一张图</h1>
<button>open</button>
</div>
//div末尾添加一个p标签
var node = document.querySelector('div')//现获取要添加元素的标签
var p= document.createElement('p');//创建一个新的段落元素
node.appendChild(p) //添加子元素
输出结果:
<div id="open">
<h1>这是一张图</h1>
<button>open</button>
<p></p>
</div>
删除子元素过程:
var node= document.querySelector(div) //获取要删除子元素的元素
var p= document.getElementByTagName(p) // 获取删除的元素
node.removeChild(p) // 删除操作
题目6: element.classList有哪些方法?如何判断一个元素的 class 列表中是包含某个 class?如何添加一个class?如何删除一个class?
var img= document.querySelector('images');
img.classList() //查看img元素的类名,返回一个数组
img.classList.add('active') //添加类名
img.classList.remove('active') //删除类名
img.classList.contains('active')//是否包含active类名,返回true ,则是包含, 返回false,为不包含
题目7: 如何选中如下代码所有的li元素? 如何选中btn元素?
<div class="mod-tabs">
<ul>
<li>list1</li>
<li>list2</li>
<li>list3</li>
</ul>
<button class="btn">点我</button>
</div>
注意: querySelectorAll('参数') //要求参数是字符串
var list= document.querySelectorAll('li') //获取所有li
console.log(list)
var btn1=document.getElementByClaaName('btn')
console.log(btn1)