HTML5权威指南读书笔记19(第28章)-dom元素,classname属性,classlist类列表,data开头自定义属性,attributes所有属性,text对象,添加创建克隆移动元素及节点

1、概述

在这里插入图片描述

2、使用元素对象

HTMLElement对象提供了一组属性,用来读取和修改被代表元素的数据

<body>
    <p id="mytext" dir="ltr" lang="ch">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <pre id="results"></pre>
    <script type="text/javascript">
      var results=document.getElementById("results");
      var mytext=document.getElementById("mytext");
      results.innerHTML+="tag:"+mytext.tagName+"\n";
      results.innerHTML+="id:"+mytext.id+"\n";
      results.innerHTML+="dir:"+mytext.dir+"\n";
      results.innerHTML+="lang:"+mytext.lang+"\n";
      results.innerHTML+="hidden:"+mytext.hidden+"\n";
      results.innerHTML+="disabled:"+mytext.disabled+"\n";
    </script>
</body>
3、className使用className属性
<head>
    <style type="text/css">
        .myp{background-color: blueviolet;}
        .mynewP{background-color: chartreuse;}
    </style>
</head>
<body>
    <p class="myp" id="mytext" dir="ltr" lang="ch">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <br/>
    <button id="mybut">切换</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mybut=document.getElementById("mybut");
      var mytext=document.getElementById("mytext");
      mybut.onclick=function(){
        mytext.className="mynewP";
      }
    </script>
</body
4、classList管理类列表

在这里插入图片描述
除了以上这些属性和方法,还可以使用数组风格的表示法,通过索引来获得类
如果移除一个类,则可以是用classlist
toggle有就天剑,没有就移除

<head>
    <style type="text/css">
        .myp{background-color: blueviolet;}
        .mynewP{background-color: chartreuse;}
    </style>
</head>
<body>
    <p class="myp" id="mytext" dir="ltr" lang="ch">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <br/>
    <button id="mybut">Toggle</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mybut=document.getElementById("mybut");
      var results=document.getElementById("results");

      mybut.onclick=mytoggleClass;
      listClasses();
      function listClasses(){
        var classlist=document.getElementById("mytext").classList;
          results.innerHTML="Current classes:";
          for(var i=0; i<classlist.length;i++){
            results.innerHTML+=classlist[i]+"";
          }
      }
     
      function mytoggleClass(){
        document.getElementById("mytext").classList.toggle("mynewP");
        listClasses();
      }
    </script>
</body>
5、使用元素属性

在这里插入图片描述
hasAttribute,setAttribute,getAttribute()

<body>
    <p class="myp" id="mytext" dir="ltr" lang="ch">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <br/>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytext=document.getElementById("mytext");
      var results=document.getElementById("results");

      results.innerHTML="p has a lang attribute:"+mytext.hasAttribute("lang")+"\n";
      results.innerHTML+="add lang atrribute:";
      mytext.setAttribute("lang","en-us")+"\n";
      results.innerHTML+="attribute is:"+mytext.getAttribute("lang")+"\n";
    </script>
</body>
6、data开头的自定义属性

以data-customProperty的形式自定义属性,最后统一在dataset集合中读取这些自定义属性

<body>
    <p class="myp" id="mytext" data-fruit="myfr" data-oran="myora">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <br/>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytext=document.getElementById("mytext");
      var results=document.getElementById("results");

      for(var attr in mytext.dataset){
        results.innerHTML+=attr+"\n";
      }
      results.innerHTML+=mytext.dataset["fruit"];
    </script>
</body>
6、attributes使用所有属性

通过attributes属性获得一个包含某元素所有属性的集合,他会返回一个由attr对象构成的数组
在这里插入图片描述

<body>
    <p class="myp" id="mytext" data-fruit="myfr" data-oran="myora">
        这里有一些文本,那里还有一些文本,这里都是一些文本
    </p>  
    <br/>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytext=document.getElementById("mytext");
      var results=document.getElementById("results");

      var attri=mytext.attributes;

      for(var i=0;i<attri.length;i++){
        results.innerHTML+="Name:"+attri[i].name+",value:"+attri[i].value+"\n";
      }
      attri["data-fruit"].value="anoterFruit";
      results.innerHTML+=attri["data-fruit"].value;
    </script>
</body>
7、使用text对象

文本内容是text对象,如

这是text对象

,即标签对之内的内容时text对象,但p不是text对象
在这里插入图片描述
<body>
    <p class="myp" id="mytext" data-fruit="myfr" data-oran="myora">
        这里有一些文本,那里还有一<b>这里都是一些文本</b>些文本单独发东方闪电
    </p>  
    
    <br/>
    <button id="mybut">press</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytext=document.getElementById("mytext");
      var results=document.getElementById("results");
      var mybut=document.getElementById("mybut");

      mybut.onclick=function(){
        var btext=mytext.firstChild;
        results.innerHTML="length:"+btext.length+"\n";
        btext.replaceWith("this is a new string");

      }
    </script>
</body>
7、修改模型

在这里插入图片描述

8、appendChild,createElement,createTextNode,removeChild创建和删除元素

通过document对象创建新的元素,然后找到一个现存的htmlElement,并使用之前介绍的某种方法来插入他们

<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody>
        <tr><td>张三</td><td>红色</td></tr>
        <tr><td>李四</td><td>绿色</td></tr>

      </tbody>
    </table>
    <br/>
    <button id="mybut">add</button>
    <button id="remove">remove</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytab=document.getElementById("mytab");
      var mybut=document.getElementById("mybut");
      var remove=document.getElementById("remove");

      mybut.onclick=function(){
        var row=mytab.appendChild(document.createElement("tr"));
        row.setAttribute("id","newrow");
        row.appendChild(document.createElement("td"))
        .appendChild(document.createTextNode("王二"));
        row.appendChild(document.createElement("td"))
        .appendChild(document.createTextNode("粉色"));

      }

      remove.onclick=function(){
        var row=document.getElementById("newrow");
        //mytab.removeChild(row)
        row.parentNode.removeChild(row);

      }
    </script>
</body>
9、cloneNode元素

cloneNode(true)指定是否复制其子元素

<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody>
        <tr><td>张三</td><td>红色</td></tr>
        <tr><td>李四</td><td>绿色</td></tr>
      </tbody>
    </table>
    <br/>
    <button id="mybut">duplicate</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytab=document.getElementById("mytab");
      var mybut=document.getElementById("mybut");

      mybut.onclick=function(){
        var newrow=mytab.childNodes[3].cloneNode(true);
        console.log(newrow);
        mytab.appendChild(newrow);

      }

     
    </script>
</body>
10、移动元素(原有元素不见了)
<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody>
        <tr><td>张三</td><td>红色</td></tr>
        <tr id="lisi"><td>李四</td><td>绿色</td></tr>
      </tbody>
    </table>
    <br/>
    <table border=1>
      <thead><th>Name</th><th>Color</th></thead>
      <tbody id="anothertab">
        <tr><td>王二</td><td>红色</td></tr>
      </tbody>
    </table>
    <br/>
    <button id="mybut">move</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var mytab=document.getElementById("mytab");
      var mybut=document.getElementById("mybut");

      mybut.onclick=function(){
        var row=document.getElementById("lisi");
        document.getElementById("anothertab").appendChild(row);
      }

     
    </script>
</body>
11、isSameNode,isEqualNode比较元素对象

isSameNode:简单地检查他们是否代表了同一个元素。
isEqualNode:如果元素具有相同的类型,相同的属性值,其子元素也相同并且顺序一致,那么他们就是相同的。

<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody id="mytbody">
        <tr id="zhangsan"><td>张三</td><td>红色</td></tr>
        <tr id="lisi"><td>李四</td><td>绿色</td></tr>
      </tbody>
    </table>
    <br/>
    
    <br/>
    <button id="mybut">issame</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var results=document.getElementById("results");
      var mybut=document.getElementById("mybut");
      var mytbody=document.getElementById("mytbody");

      var myzhangsan=document.getElementById("zhangsan");
      var myrow=mytbody.getElementsByTagName("tr")[0];
      if(myzhangsan.isSameNode(myrow)){
        results.innerHTML="the two element is same";
      } 
    </script>
</body>

isEqualNode

  <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody id="mytbody">
        <tr class="zhangsan"><td>张三风</td><td>红色</td></tr>
        <tr id="lisi"><td>李四</td><td>绿色</td></tr>
      </tbody>
    </table>
    <br/>
    <button id="mybut">issame</button>
    <pre id="results"></pre>
    <script type="text/javascript">
      var elems=document.getElementsByClassName("zhangsan");
      if(elems[0].isEqualNode(elems[1])){
        results.innerHTML="the two element is equal";
      } else{
        results.innerHTML="the two element is NOT equal";

      }
    </script>
</body>
12、innerHtml,outerHTML,insertAdjacentHTML使用html片段

innerhtml:标签内部的内容
outerhtml:连带标签及内容一起显示出来

<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody id="mytbody">
        <tr class="zhangsan"><td>张三</td><td>红色</td></tr>
        <tr id="lisi"><td>李四</td><td>绿色</td></tr>
        <tr class="zhangsan"><td>张三</td><td>红色</td></tr>

      </tbody>
    </table>
    <br/>
    
    <br/>
    <button id="inner">innerHTML</button>
    <button id="outer">outerHTML</button>
    <textarea rows="3" id="results"></textarea>
    <script type="text/javascript">
      var results=document.getElementById("results");
      var row=document.getElementById("lisi");

      var inner=document.getElementById("inner");
      var outer=document.getElementById("outer");
      
      inner.onclick=function(){
        results.innerHTML=row.innerHTML;
      }
      outer.onclick=function(){
        results.innerHTML=row.outerHTML;
      }
    </script>
</body>
13、insertAdjacentHTML插入HTML片段(代码片段)

insertAdjacentHTML方法有两个参数,一个参数是插入的位置,一个参数是插入的代码片段
在这里插入图片描述

<body>
    <table border=1 id="mytab">
      <thead><th>Name</th><th>Color</th></thead>
      <tbody id="mytbody">
        <tr id="targetrow"><td>Placeholder</td></tr>
      </tbody>
    </table>
    <br/>
    
    <br/>
    <button id="ab">After Begin</button>
    <button id="ae">After End</button>
    <button id="bb">Before Bengin</button>
    <button id="be">Before End</button>

    <script type="text/javascript">
      var target=document.getElementById("targetrow");
      var buttons=document.getElementsByTagName("button");
      
      for(var i=0;i<buttons.length;i++){
        buttons[i].onclick=handleButPress;
      }
      
      function handleButPress (e){
        if(e.target.id=="ab"){
          target.insertAdjacentHTML("afterbegin","<td>this is after begein<td/>");
        }else if(e.target.id=="ae"){
          target.insertAdjacentHTML("beforeend","<td>this is before end<td/>");
        }else if(e.target.id=="bb"){
          target.insertAdjacentHTML("beforebegin","<tr><td colspan='2'>this is before end<td/></tr>");
        }else{
          target.insertAdjacentHTML("afterend","<tr><td colspan='2'>this is After End<td/></tr>");
        }
      
      }

      
    </script>
</body>
13、向文本块插入元素
<body>
    <p id="text">
      there is some things to do something, By the time add,countleess zhen
    </p>
    <br/>
    
    <br/>
    <button id="insert">Insert Element</button>
    

    <script type="text/javascript">
      var buttons=document.getElementById("insert");
      buttons.onclick=function(){
        var text=document.getElementById("text");
        text.firstChild.splitText(10);

        var newText=text.childNodes[1].splitText(9).previousSibling;
        //创建了一个b元素,将截取的一部分放入到文本中
        text.insertBefore(document.createElement("b"),newText).appendChild(newText);
      }  
    </script>
</body>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值