创建元素
让我们从创建HTML标签开始,我们可以通过document.createElement(tagName)方法来创建,如下所示:
|
|
|
|
文本
HTML标签如果没有内容的话是一个空的标签,我们可以使用element.textContent来增加一些文本:
|
|
|
|
属性
可以通过element.setAttribute(name, value)方法来操作属性:
|
|
|
|
通过 element.className 可以操作类:
|
|
|
|
但是使用 classList是一种更好的方式:
|
|
|
|
|
|
|
|
标签的ID可以通过属性操作或是 id相关api来操作:
|
|
|
|
|
|
如果你不确定使用attributes 还是 properties操作,那么就直接使用attributes操作-除了像标签的 value、checked等值.
记住你不能用 element.setAttribute(someBoolean, false) 来更改布尔属性值,但是可以使用其他的方法来代替:
|
|
|
|
|
|
|
|
在一个标签之后附加标签元素
如何在标签元素之后插入标签呢?我们可以通过 parent.appendChild(child)来完成:
|
|
|
|
删除
可以通过 parent.removeChild(child)来删除一个标签元素:
|
|
|
|
查找
下面的这些API都可以实现查找功能:
- document.getElementById(id)
- element.childNodes[i]
- element.firstChild === element.childNodes[0]
- element.lastChild === element.childNodes[element.childNodes.length - 1]
- element.getElementsByTagName(tagName)
- element.getElementsByClassName(className)
- element.querySelector(query)
- element.querySelectorAll(query)
注意,getElementsByTagName, getElementsByClassName 和 querySelectorAll 返回的不是数组而是一个NodeList对象, 所以不能直接使用数组操作. 这里有一些帮助你使用数组操作的方法.
在两个标签直接插入元素
如何在两一个标签之前插入一个元素呢?可以通过 parent.insertBefore(child, before) 来实现!
|
|
|
|
|
|
创建标签列表
当有许多数据的时候,我们可以动态的创建标签:
更新列表数据
下面我们来看如何更新列表:
点击查看
这里做了什么呢?主要做了两件事:
1.通过一个隐藏元素来查找子元素
通过使用_lookup我们可以使用已经存在的元素然后更新它们。
2.setChildren(parent, children)方法可以让你设置一个子元素列表,他会智能的比较已存在的子元素并将函数中提供的子元素合并进去。
你也可以使用 setChildren 来挂载或卸载子元素:
|
|
RE:DOM
这是我所编写的一个微型dom库,你可以在这里了解关于RE:DOM的一切。
1.通过redom会更容易创建DOM元素相比于el(query, …attributes/properties/text/children)等方法。
2.你可以自己定义视图并决定如何更新它们,浏览器会自动的更新对应的DOM。
3.redom的list(parent, View, id, initData)让你非常容易的实现dom数据的同步。
|
|
|
|
|
|
|
|
|
|
|
|
lists方法的示例:
|
|
|
|