zoukankan      html  css  js  c++  java
  • DOM读取和修改节点对象属性

    一、获取和修改元素间的内容(3种)

      1.innerHTML 获得/设置元素开始标签和结束标签之间的html原文

        固定套路:1.删除父元素下所有子元素:parent.innerHTML="";

             2.批量替换父元素下所有子元素:parent.innerHTML="所有子元素标签组成的html"

      2.textContent/innerText: 获得开始标签和结束标签之间的文本(去除标签)

        textContent 是DOM标准;innerText 是IE8;

      3.文本节点内容

        nodeValue

      示例:读取并修改元素内容

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <title>读取并修改元素的内容</title>
     5 <meta charset="utf-8" />
     6 <style>
     7     select{width:100px;height:85px;}
     8     div{display:inline-block;width:50px}
     9 </style>
    10 <script src="js/2_2.js"></script>
    11 </head>
    12 <body>
    13     <!--假设两个select元素,分别保存备选地区列表和选中地区列表
    14 实现两选择框之间选项的交换:
    15     包括:当个选中项左右移动
    16               多个选中项左右移动
    17               全左移和全右移
    18 要求:两个select中的地区都要按照名称首字母排序
    19 -->
    20     <select id="unsel" size="5" multiple>
    21         <option>Argentina</option>
    22         <option>Brazil</option>
    23         <option>Canada</option>
    24         <option>Chile</option>
    25         <option>China</option>
    26         <option>Cuba</option>
    27         <option>Denmark</option>
    28         <option>Egypt</option>
    29         <option>France</option>
    30         <option>Greece</option>
    31         <option>Spain</option>
    32     </select>
    33     <div>
    34 <button onclick="move(this)">&gt;&gt;</button>
    35 <button onclick="move(this)">&gt;</button>
    36 <button onclick="move(this)">&lt;</button>
    37 <button onclick="move(this)">&lt;&lt;</button>
    38     </div>
    39     <select id="sel" size="5" multiple>
    40     </select>
    41 </body>
    42 </html>
    View Code
     1 //定义两个数组:
     2 //    unsel:存所有未选中的国家(左边的)
     3 //    sel:存所有选中的国家(右边)
     4 var unsel=null;
     5 var sel=null;
     6 
     7 //封装$
     8 window.$=function(selector){
     9     return document.querySelectorAll(selector);
    10 }
    11  //当页面加载后
    12 window.onload=function(){
    13     /*初始化unsel  "</option>"*/
    14     unsel=$("#unsel")[0].innerHTML.trim().slice(8,-9).split(/</option>s*<option>/);
    15     //console.log(unsel);
    16     sel=[];
    17 
    18 }
    19 /**/
    20 function move(btn){
    21     //如果btn的内容是>>
    22     if (btn.innerHTML=="&gt;&gt;") //btn.textContent==">>" textContent会对字符进行转义
    23     {
    24         //将unsel中的所有元素,拼入sel,对新数组排序
    25         sel=sel.concat(unsel);
    26         sel.sort();
    27         unsel=[];
    28         //console.log(sel);
    29     }else if (btn.innerHTML=="&lt;&lt;")
    30     {//如果btn的内容是<<
    31         unsel=unsel.concat(sel);
    32         unsel.sort();
    33         sel=[];
    34         //console.log(unsel);
    35     }else if (btn.innerHTML=="&gt;")
    36     {//如果btn的内容是>
    37         var opts=$("#unsel option");
    38         //option对象的selected属性==>true/false
    39         //获得unsel下的所有option对象
    40         console.log(opts.length);
    41         //遍历所有的option
    42         for (var i=opts.length-1; i>=0; i--)
    43         {
    44             //只要当前option的selected有效
    45             if (opts[i].selected)
    46             {
    47                 //使用splice删除unsel中的相同位置的元素,将删除的元素压入sel中
    48                 sel.push(unsel.splice(i,1)[0]);
    49                 //如果在遍历过程中会影响到下标,建议从后向前遍历
    50             }
    51         }
    52         //遍历结束,对sel进行排序
    53         sel.sort();
    54 
    55     }else if (btn.innerHTML=="&lt;")
    56     {//如果btn的内容是<
    57         var opts=$("#sel option");
    58         //console.log(opts.length);
    59         for(var i=opts.length-1; i>=0; i--){
    60             if(opts[i].selected){
    61                 unsel.push(sel.splice(i,1)[0]);
    62             }
    63         }
    64         unsel.sort();
    65     }
    66     //更新界面 
    67     updateSel();
    68 }
    69 function updateSel(){
    70     //专门跟新两个select元素的内容
    71     //
    72     $("#unsel")[0].innerHTML="<option>"+unsel.join("</option><option>")+"</option>";
    73     $("#sel")[0].innerHTML="<option>"+sel.join("</option><option>")+"</option>";
    74 }
    View Code

    二、获取、添加、删除、修改元素属性

      getAttribute("属性名")  获取元素对象指定特性的值

      setAttribute(name, value)  设置元素对象指定特性的值

      removeAttribute('属性名')  删除元素对象上的指定特性

      hasAttribute('属性名')  判断元素对象是否包含指定特性

      attributes()  获取元素对象指定特性的集合

      1.读取属性(4种)

        element.attributes[下标].value

        var value=element.attributes['属性名']

        element.getAttributeNode('属性名').value

        var value=element.getAttribute("属性名")

      2.修改属性(2种)

        element.setAttribute(name, value);//IE8不支持 只能:element.attributes['属性名']=value

        element.setAttributeNode(attrNode);//属性可以是属性节点

      3.移除属性(2种)

        element.removeAttribute('属性名');

        element.removeAttributeNode(attrNode);

      4.判断元素是否包含属性(2种) 

        element.hasAttribute('属性名') //true或false

        element.hasAttributes( );

      5.Property(属性) vs Attribute(HTML特性)

        Property: 对象在内存中存储的属性 可以用 . 访问

        Attribute: 元素对象在开始标签中定义的HTML属性和自定义属性

        访问HTML标准属性时,二者完全一致。如果访问自定义属性时,只能用Attribute。

      示例:修改元素属性 模拟摇号排序

     1 <!DOCTYPE HTML>
     2 <html>
     3 <head>
     4 <title>修改元素的属性</title>
     5 <meta charset="utf-8" />
     6 <script src="js/3_1.js"></script>
     7 </head>
     8 <body>
     9     <!--1. 使用自定义属性实现摇号排名-->
    10     <ul>
    11         <li>Eric</li>
    12         <li>Scott</li>
    13         <li>Jerry</li>
    14         <li>Tom</li>
    15         <li>Rose</li>
    16         <li>John</li>
    17         <li>Smith</li>
    18         <li>Andy</li>
    19     </ul>
    20 </body>
    21 </html>
    View Code
     1 window.onload=function(){
     2     //获得ul下所有li
     3     var lis=document.querySelectorAll("ul li");
     4     var nums=[];
     5     //反复生成随机数,nums.length<lis.length
     6     //    在1到lis.length之间取1个随机正数n
     7     //    利用nums的indexOf方法,查找是否包含n
     8     //    如果不包含,将n压入nums中
     9     while (nums.length<lis.length)
    10     {
    11         var n=parseInt(Math.random()*(lis.length-1+1)+1);
    12         if(nums.indexOf(n)==-1){
    13             nums.push(n);
    14         }
    15     }
    16     console.log(nums);
    17     //将nums中的数字,保存到每个li的data-i自定义属性中
    18     //遍历nums
    19     //    将nums中当前的数字,设置到相同位置的li中的data-i特性上
    20     for (var i=0; i<nums.length; i++)
    21     {
    22         lis[i].setAttribute("data-i",nums[i]);803490
    23     }
    24     
    25     //将类数组最想转化为标准数组对象
    26     lis=Array.prototype.slice.call(lis);
    27     //尽让li的data-i特性相减
    28     lis.sort(function(a,b){
    29         return a.getAttribute("data-i")-b.getAttribute("data-i");
    30         //return a.dataset.i-b.dataset.i;//HTML5中读取自定义属性; "data-xxx"-->dataset的集合中,属性名xxx
    31         });
    32 
    33     //清空所有旧li
    34     ul=document.querySelector("ul");
    35     ul.innerHTML="";
    36     
    37     for (var i=0; i<lis.length; i++)
    38     {
    39         //将li追加到ul中
    40         ul.appendChild(lis[i]);
    41     }
    42     console.log(lis);
    43 }
    View Code

    三、获取和修改元素的样式

      1.获取或修改内联样式:style对象

        设置:style.属性名="值";   

        移出(2种):
          style.属性名="";
          style.removeProperty("CSS属性名")

        //仅能操作style属性中定义的内联样式,无法获取或设置样式表中的样式

      2.获取或修改内联样式表中的属性(3步)

        1. 获得要修改的样式表对象:

        var sheet=document.styleSheets[i];//styleSheets:获得当前网页的所有样式表对象

        2. 获得要修改的cssRule:

        cssRule:样式表中一个大括号就是一个cssRule对象

        var cssRule=sheet.cssRules[i];//cssRule可能嵌套。

        3. 获得cssRule中的属性

        cssRule.style.属性名

        

  • 相关阅读:
    PG中 generate_series函数的使用
    代码搜索神器ag
    效率神器2
    效率神器
    Django-cookie组件
    Django-form组件
    Django组件-分页器
    Django与Ajax
    Django-模型层
    Django-模板层
  • 原文地址:https://www.cnblogs.com/Medeor/p/4909149.html
Copyright © 2011-2022 走看看