如何获取节点

getElementById() 通过id来获取

  1. <div id="app">
  2. </div>
  3. <div class="one">one1</div>
  4. <div class="one">one2</div>
  5. <div class="one">one3</div>
  6. <script>
  7. var app = document.getElementById("app")
  8. // console.log(app);
  9. </script>

getElementsByTagName() 返回带有指定标签名的对象的集合

  • HTMLCollection(HTML集合),不是数组 类数组对象,可以使用数组的属性,可以for循环 ```javascript
    hello world

var app = document.getElementsByTagName(“div”)

// app HTMLCollection(HTML集合),不是数组 类数组对象,可以使用数组的属性,可以for循环 console.log(Array.isArray(app)); // false console.log(app.length); for(var i = 0;i<app.length;i++){ console.log(app[i]); }

  1. <a name="oS2c6"></a>
  2. ### getElementsByClassName()通过class来获取
  3. - **实例 点击某个div消失**
  4. ```javascript
  5. <div class="one">hello 1</div>
  6. <div class="one">hello 2</div>
  7. <div class="one">hello 3</div>
  8. <div class="one">hello 4</div>
  9. <script>
  10. /*
  11. this --> 在事件中,谁执行事件,this就指谁
  12. */
  13. var all = document.getElementsByClassName("one")
  14. for(var i=0;i<all.length;i++){
  15. // 不能对HTML Collection 执行点击事件,只能对具体元素执行事件
  16. all[i].onclick=function(){
  17. // console.log(this)
  18. this.style.display = "none";
  19. }
  20. }
  21. console.log(all)
  22. </script>

获取节点

nodeType 节点类型

  • nodeType == 1 元素节点
  • nodeType == 2 属性节点
  • nodeType == 3 文本节点

    getAttributeNode() 获取属性节点

    firstChild() 获取第一个子节点

    ```javascript // getAttributeNode() 获取属性节点 // firstChild() 获取第一个子节点

    hello world

  1. <a name="tJWjj"></a>
  2. ### childNodes 获取所有子节点
  3. <a name="8396489e"></a>
  4. ### parentNode 父元素节点
  5. ```javascript
  6. <ul id="app">
  7. <li>hello world</li>
  8. <li>hello world</li>
  9. <li>hello world</li>
  10. <li>hello world</li>
  11. </ul>
  12. <script>
  13. var app = document.getElementById("app")
  14. var childs = app.childNodes;
  15. console.log(childs); // 所有的子节点 共有9个
  16. var arr = []
  17. for(var i = 0;i<childs.length;i++){
  18. if(childs[i].nodeType == 1){
  19. arr.push(childs[i])
  20. }
  21. }
  22. console.log(arr);
  23. </script>

1-3 children 只获取元素节点

  1. <ul id="app">
  2. <li>hello world</li>
  3. <li>hello world</li>
  4. <li>hello world</li>
  5. <li>hello world</li>
  6. </ul>
  7. <script>
  8. var app = document.getElementById("app")
  9. console.log(app.children) // 只获取元素节点
  10. </script>

增加节点

appendChild 追加节点(末尾添加节点)

向节点的子节点列表的末尾添加新的子节点

createElement() 创建节点

createTextNode() 创建文本节点

  1. <div id="app">
  2. </div>
  3. <script>
  4. var app = document.getElementById("app")
  5. var p = document.createElement("p")
  6. var txt = document.createTextNode("hello world")
  7. p.appendChild(txt)
  8. console.log(p)
  9. app.appendChild(p)
  10. console.log(app)
  11. </script>

insertBefore 插入节点

parentNode.insertBefore(newNode,在谁前面)
在已有的子节点前插入一个新的子节点

  1. <ul id="app">
  2. <li>html</li>
  3. <li id="js">javascript</li>
  4. </ul>
  5. <!--
  6. innerHtml 元素里的文字
  7. parentNode.insertBefore(newNode,在谁前面) 插入节点
  8. -->
  9. <script>
  10. var app = document.getElementById("app")
  11. var li = document.createElement("li")
  12. var js = document.getElementById("js")
  13. li.innerHTML = "vue"
  14. console.log(li);
  15. app.insertBefore(li,js)
  16. console.log(app)
  17. </script>

innerHtml

innerHTML在JS是双向功能:获取对象的内容 或 向对象插入内容
如:

这是内容

我们可以通过 document.getElementById(‘aa’).innerHTML 来获取id为aa的对象的内嵌内容;
也可以对某对象插入内容,如 document.getElementById(‘abc’).innerHTML=’这是被插入的内容’;
这样就能向id为abc的对象插入内容。
定义和用法:
innerHTML 属性用于设置或返回指定标签之间的 HTML 内容。
语法
Object.innerHTML = “HTML”;// 设置
var html = Object.innerHTML;// 获取
例子 1
获取段落p的 innerHTML(html内容)

  1. <p id="test"><font color="#000">嗨豆壳 www.hi-docs.com</font></p>
  2. <input type="button" onclick="getInnerHTML()" value="点击" />
  3. <script>
  4. function getInnerHTML(){
  5. alert(document.getElementById("test").innerHTML);
  6. }
  7. </script>

例子 2
设置段落p的 innerHTML(html内容)

  1. 3. <script type="text/javascript">
  2. 4. function setInnerHTML(){
  3. 5. document.getElementById("test").innerHTML = "<strong>设置标签的html内容</strong>";
  4. 6. }
  5. 7. </script>
  6. 8. </head><body>
  7. <p id="test"><font color="#000">嗨豆壳 www.hi-docs.com</font></p>
  8. <input type="button" onclick="setInnerHTML()" value="点击" />

append 在结尾插入节点

prepend 在开头插入节点

  1. <ul id="app">
  2. <li>html</li>
  3. </ul>
  4. <script>
  5. // append,prepend
  6. var app = document.getElementById("app");
  7. var p1 = "<h1>我是在结尾插入的</h1>";
  8. var p2 = "<h1>我是在开头插入的</h1>"
  9. app.append(p1);
  10. app.prepend(p2)
  11. </script>

before 在元素节点前插入节点

after在元素节点后插入节点

  1. <p id="p">hello world</p>
  2. <script>
  3. var p = document.getElementById("p");
  4. p.after("after")
  5. p.before("before")
  6. </script>

删除节点

removeChild() 删除节点

  1. <div id="app">
  2. <div id="child">
  3. hello world
  4. </div>
  5. </div>
  6. <script>
  7. // removeChild() 让元素从DOM树,渲染树中消失
  8. var app = document.getElementById("app")
  9. var child = document.getElementById("child")
  10. app.removeChild(child)
  11. </script>

替换节点

replaceChild 替换节点

parentNode.replaceChild(newNode,targetNode) 替换某个元素

  1. <div id="app">
  2. <div id="child">
  3. child
  4. </div>
  5. </div>
  6. <script>
  7. var app = document.getElementById("app")
  8. var child = document.getElementById("child")
  9. var p = document.createElement("p")
  10. p.innerHTML = "hello world"
  11. app.replaceChild(p,child)
  12. console.log(app);
  13. </script>

克隆节点

cloneNode 克隆节点

  1. node.cloneNode( )
  2. 括号为空或false浅拷贝,只复制标签不复制内容
  3. 括号为true,深拷贝,也复制内容
  1. <div id="app">
  2. <div id="one">hello world</div>
  3. </div>
  4. <script>
  5. var app = document.getElementById("app")
  6. var one = document.getElementById("one")
  7. var test = one.cloneNode(true)
  8. console.log(test);
  9. app.appendChild(test);
  10. console.log(app);
  11. </script>

节点和元素节点

  1. firstChild 获取第一个子节点
  2. firstElementChild 获取第一个元素子节点
  3. lastChild
  4. lastElementChild
  5. nextSibling
  6. nextElementSibling
  7. previousSibling
  8. previousElementSibling
  1. <ul id="app">
  2. <li>html</li>
  3. <li>css</li>
  4. </ul>
  5. <script>
  6. var app = document.getElementById("app")
  7. console.log(app.firstElementChild);
  8. </script>