JavaScript——关于节点的杂项
首先如果使用DOM模型,需要将整个的script写在body的后面,保证整个DOM模型完整生成之后,再获取对应的元素
id 表示DOM中的某个节点的唯一标识,该标识乐意帮助我们快速获取DOM中的某个指定节点,因其唯一性,所以得到的节点也是唯一的,故在文档中不适合多个标签使用同一个id
通过标签名来获取对应的标签,通过此方法返回的结果是以HTMLCollection来保存的。
HTMLColloction是伪数组,没有数组的push,pop,但是依然有下标的概念,下标的范围(0~长度~1),有length属性,可以明确保存的元素个数
例如:得到body里面的ol中的li元素
var lis = document.getElementByTagName("li");
console.log(lis).
通过childNodes属性可以获取节点的子节点,一直要到叶子节点,如果子节点之间有回车换行,回车会被当做一个text节点,如果要用childNodes属性获取正确节点,则不能使用换行
console.log(list.childNodes);
console.log(list.firstChildNode);
console.log(list.lastChildNode);
获取指定节点的父节点
console.log(list.parentNode);
在某一个已经存在的子节点前插入一个新的子节点
var div = document.createElement("div");
div.style.width = "200px";
div.style.height = "200px";
div.style.background = "red";
在某一个节点下插入一个新的节点:
ininsertBerfore有两个参数,第一个是新元素,第二个是已经存在的元素(中间是逗号隔开,而不是句号)
list.parentNode.insertBefore(div,list);
已经存在的两个子节点可以通过此方法来交换顺序
list.parentNode.insertBefore(list,div);
替换已有的子节点,拿第一个参数元素去替换第二个参数元素
list.replaceChild(lis[0],lis[3]);
删除已有的节点
list.removeChild(lis[0]);
复制子节点,cloneNode()的参数是boolean类型的
true:复制节点及其子节点(如果存在节点)
复制节点及其子节点的文本内容(如果存在内容)
false:只复制当前节点本身,不包含子节点及其文本内容
获取节点的另一种属性:
children属性得到的只是子节点元素,不包括回车和空格等字符,但是在IE9浏览器上回包含代码注释,IE9会把代码注释也当做一个子节点。
console.log(list.children);
list.setAttribute("index" , 121);
获取已知节点的属性值
console.log(list.getAttribute("index"));