# day10
## 查询节点
### 1.如果需要操作HTML元素/节点,必须找到该元素
### 2.查询节点的方式
2.1 通过id查询
2.2 通过层次查询(节点的结构关系)
parentNode(找到节点的父亲元素)
2.3 通过标签名查询
2.4 通过name查询
男
女
window.οnlοad=function(){
//1 通过id查询
//var oLi_gz=document.getElementById("gz");
//console.log(oLi_gz);
//2 通过层次查询(节点的结构关系)
//2.1 查询某个已知节点的父亲
//console.log(oLi_gz.parentNode);
//var oUl=oLi_gz.parentNode;
//3 通过标签名查询
var oUl=document
.getElementsByTagName("ul")[0];
//console.log(oUl);
//2.2 查询某个已知节点的孩子
//这种直接使用childNodes,不方便
//console.log(oUl.childNodes);
//这种获得父级元素对象内部元素的方式很重要
var oLis=oUl.getElementsByTagName("li");
//console.log(oLis);
//通过id得到广州的li对象.
var oLi_gz=document.getElementById("gz");
//通过此对象,如何得到所有li节点对象
var oLis=oLi_gz.parentNode
.getElementsByTagName("li");
console.log(oLis);
//4 通过name查询
var oInputs=document
.getElementsByName("gender");
console.log(oInputs);
}
## 创建新节点
### var obj=document.createElement("TagName");
### 1.创建一个新节点对象
### 2.把这个新对象挂到Dom树上
### 课堂小练习,添加li标签
value="追加" οnclick="fn1();">
function fn1(){
//创建新节点
var oLi=document.createElement("li");
//设置节点内容
oLi.innerHTML="贵州";
//挂在dom树上
var oUl=document
.getElementsByTagName("ul")[0];
oUl.appendChild(oLi);
}
### 插入新标签,需要知道父亲和弟弟对象
value="追加" οnclick="fn1();">
value="插入" οnclick="fn2();">
function fn1(){
//创建新节点
var oLi=document.createElement("li");
//设置节点内容
oLi.innerHTML="贵州";
//挂在dom树上
var oUl=document
.getElementsByTagName("ul")[0];
oUl.appendChild(oLi);
}
function fn2(){
var oLi=document.createElement("li");
oLi.innerHTML="杭州";
//获得父级对象和弟弟对象
var oUl=document
.getElementsByTagName("ul")[0];
var oLi_gz=document.getElementById("gz");
//把新节点插入到弟弟之前
//父亲.insertBefore(新标签,弟弟);
oUl.insertBefore(oLi,oLi_gz);
}
## 删除节点
value="删除" οnclick="fn3();">
function fn3(){
//父级对象,被删除节点本身
var oUl=document
.getElementsByTagName("ul")[0];
var oLi_gz=document.getElementById("gz");
//通过父级把孩子删除
oUl.removeChild(oLi_gz);
}
### 小总结:
### 增加或者删除节点,都必须使用父节点对象调用方法
### gz想删除自己,步骤是什么,一句话总结
### 先找到gz的对象,通过此对象找到父级ul
### ul.removeChild(gz)
### 找他爹删他
### 综合总结:
### 1.读写节点内容/节点类型/节点名称/节点属性
obj.nodeName/obj.NodeType
obj.innerHTML/obj.innerText
obj.value
obj.setAttribute()/obj.getAttribute()
obj.className/ obj.id /obj.style.color
### 2.查询节点
document.getElementById()
document.getElementsByTagName()//返回值是数组
document.getElementsByTagName("tagname")[index]
//通过父级对象调用此方法,得到范围更精准
obj.getElementsByTagName("tagname")[index]
obj.parentNode/obj.childNodes
//专门通过name属性找到对象
document.getElementsByName();
### 3.增删节点,父节点在调用方法,增删子节点
### 增加节点,先创建新节点,挂到dom树上
document.createElement("tagname")
obj_parent.appendChild(newnode);
obj_parent.insertBefore(newnode,弟弟);