zoukankan      html  css  js  c++  java
  • Javascript DOM基础(二) childNodes、children

     childNodes知识点:

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5 <title>无标题文档</title>
     6 <script>
     7 window.onload = function() {
     8     
     9     var oUl = document.getElementById('ul1');
    10     
    11     /*
    12         元素.childNodes : 只读 属性 子节点列表集合
    13             标准下:包含了文本和元素类型的节点,也会包含非法嵌套的子节点
    14             非标准下:只包含元素类型的节点,ie7以下不会包含非法嵌套子节点
    15             
    16             childNodes只包含一级子节点,不包含后辈孙级以下的节点
    17         
    18         DOM节点的类型有很多种    12种
    19         
    20         元素.nodeType : 只读 属性 当前元素的节点类型
    21         
    22         元素节点    :    1
    23         属性节点    :    2
    24         文本节点 :    3
    25         注释节点 :     8
    26         文档节点 :     9
    27     */
    28     
    29     alert( oUl.childNodes.length );
    30     
    31     //alert( oUl.nodeType );
    32     
    33     //alert(oUl.childNodes[0].nodeType);
    34     
    35     //属性
    36     // 元素.attributes : 只读 属性 属性列表集合
    37     
    38     //alert( oUl.attributes.length );
    39     
    40     //alert( oUl.attributes[0].nodeType );
    41     
    42     for (var i=0; i<oUl.childNodes.length; i++) {
    43         
    44         if ( oUl.childNodes[i].nodeType == 1 ) {
    45             oUl.childNodes[i].style.background = 'red';
    46         }
    47         
    48     }
    49     
    50 }
    51 </script>
    52 </head>
    53 
    54 <body>
    55     <ul id="ul1" style="border: 1px solid red;">
    56         <li>11111 <span>span</span></li>
    57         <li>22222</li>
    58         <li>33333</li>
    59         <li>44444</li>
    60         <p>pppppppp</p>
    61     </ul>
    62 </body>
    63 </html>

     children知识点:

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5 <title>无标题文档</title>
     6 <script>
     7 window.onload = function() {
     8     
     9     var oUl = document.getElementById('ul1');
    10     
    11     /*
    12         元素.children : 只读 属性 子节点列表集合
    13             标准下:只包含元素类型的节点
    14             非标准下:只包含元素类型的节点
    15     */
    16     
    17     //alert( oUl.children.length );
    18     
    19     for (var i=0; i<oUl.children.length; i++) {
    20         
    21         oUl.children[i].style.background = 'red';
    22         
    23     }
    24     
    25 }
    26 </script>
    27 </head>
    28 
    29 <body>
    30     <ul id="ul1" style="border: 1px solid red;">
    31         <li>11111 <span>span</span></li>
    32         <li>22222</li>
    33         <li>33333</li>
    34         <li>44444</li>
    35         <p>pppppppp</p>
    36     </ul>
    37 </body>
    38 </html>
     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     5 <title>无标题文档</title>
     6 <script>
     7 window.onload = function() {
     8     
     9     var oUl = document.getElementById('ul1');
    10     /*
    11         元素.firstChild : 只读 属性 第一个子节点
    12             标准下:firstChild会包含文本类型的节点
    13             非标准下:只包含元素节点
    14         元素.firstElementChild : 只读 属性 标准下获取第一个元素类型的子节点
    15     */
    16     
    17     //alert( oUl.firstChild );
    18     
    19     //alert( oUl.firstElementChild );
    20     
    21     /*if ( oUl.firstElementChild ) {
    22         oUl.firstElementChild.style.background = 'red';
    23     } else {
    24         oUl.firstChild.style.background = 'red';
    25     }*/
    26     
    27     var oFirst = oUl.firstElementChild || oUl.firstChild;
    28     oFirst.style.background = 'red';
    29     
    30     /*
    31         元素.lastChild || 元素.lastElementChild 最后一个子节点
    32     */
    33     var oLast = oUl.lastElementChild || oUl.lastChild;
    34     oLast.style.background = 'yellow';
    35     
    36     /*
    37         元素.nextSibling || 元素.nextElementSibling 下一个兄弟节点
    38     */
    39     var oNext = oFirst.nextElementSibling || oFirst.nextSibling;
    40     oNext.style.background = 'blue';
    41     
    42     /*
    43         元素.previousSibling || 元素.previousElementSibling 上一个兄弟节点
    44     */
    45     var oPrev = oLast.previousElementSibling || oLast.previousSibling;
    46     oPrev.style.background = 'orange';
    47     
    48     
    49 }
    50 </script>
    51 </head>
    52 
    53 <body>
    54     <ul id="ul1">
    55         <li>11111</li>
    56         <li>22222</li>
    57         <li>33333</li>
    58         <li>44444</li>
    59     </ul>
    60 </body>
    61 </html>

    应用 实例:

    1.留言板加强
        最多只能添加5(自己定)条,最先留的言会被清除
    2.为留言添加批量删除
        可以点击选择单个留言,点击批量删除按钮,可以删除被选中的留言内容

      1 <!DOCTYPE HTML>
      2 <html>
      3 <head>
      4 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      5 <title>无标题文档</title>
      6 <script>
      7 window.onload = function() {
      8     
      9     var oText = document.getElementById('text1');
     10     var oBtn = document.getElementById('btn');
     11     var oBtn2 = document.getElementById('btn2');
     12     var oUl = document.getElementById('ul1');
     13     
     14     oBtn.onclick = function() {
     15         
     16         /*
     17             document.createElement(标签名称); 创建元素
     18         */
     19         
     20         var oLi = document.createElement('li');
     21         
     22         //oLi.innerHTML = oText.value + '<a href="javascript:;">删除</a>';
     23         oLi.innerHTML ='<input type="checkbox"  value="" />'+ oText.value;
     24         
     25         var oA = document.createElement('a');
     26         oA.innerHTML = '删除';
     27         oA.href = 'javascript:;';
     28         oA.onclick = function() {
     29             
     30             /*
     31                 父级.removeChild(要删除的元素); 删除元素
     32             */
     33             
     34             oUl.removeChild( this.parentNode );
     35             
     36         }
     37         
     38         oLi.appendChild( oA );
     39         
     40         
     41         //添加到页面中
     42         /*
     43             父级.appendChild(要添加的元素) 方法 追加子元素
     44         */
     45         //oUl.appendChild( oLi );
     46         
     47         /*
     48             父级.insertBefore(新的元素,被插入的元素) 方法 在指定元素前面插入一个新元素
     49             在ie下如果第二个参数的节点不存在,会报错
     50             在其他标准浏览器下如果第二个参数的节点不存在,则会以appendChild的形式进行添加
     51         */
     52         //oUl.insertBefore( oLi, oUl.children[0] );
     53         
     54         if ( oUl.children[0] ) {
     55             oUl.insertBefore( oLi, oUl.children[0] );
     56             if(oUl.children.length>5){
     57                 oUl.removeChild( oUl.children[oUl.children.length-1]);
     58             };
     59         } else {
     60             oUl.appendChild( oLi );
     61         };
     62         
     63         var aInput=oUl.getElementsByTagName("input");
     64         
     65         for(var i=0;i<aInput.length;i++){
     66             
     67             aInput[i].index=i;
     68             aInput[i].onOff=true;//为当前表单元素添加一个开关
     69             aInput[i].onclick=function(){
     70 
     71                 if(aInput[this.index].onOff){//如果当前开关为true
     72                     aInput[this.index].value='checkBox';//就为当前 表单 的value值添加check
     73                     aInput[this.index].onOff=false;
     74                 }else{
     75                     aInput[this.index].value='';
     76                     aInput[this.index].onOff=true;
     77                 };
     78             };
     79         };
     80         
     81         
     82           oBtn2.onclick=function(){
     83               for(var i=0;i<aInput.length;i++){
     84                 if(aInput[i].value=='checkBox'){
     85                         oUl.removeChild( aInput[i].parentNode );
     86                     };
     87                 };
     88           };
     89         
     90     };
     91     
     92 }
     93 </script>
     94 </head>
     95 
     96 <body>
     97     <input type="text" id="text1" /><input type="button" value="留言" id="btn" />
     98     <ul id="ul1"></ul>
     99     <input type="button" value="删除" id="btn2" />
    100 </body>
    101 </html>
  • 相关阅读:
    Django 之 admin管理工具
    第二十七天- 网络通信协议 TCP UDP 缓冲区
    第二十六天- C/S架构 通信流程 socket
    第二十五天- 包
    第二十四天- 模块导入 import from xxx import xxx
    第二十三天- 模块 re
    第二十二天- 序列化 pickle json shelve
    第二十一天- 基本模块
    第二十天- 多继承 经典MRO 新式MRO super()
    第十九天- 约束 异常处理 日志使用
  • 原文地址:https://www.cnblogs.com/trtst/p/3771090.html
Copyright © 2011-2022 走看看