首页 > 代码库 > DOM day2

DOM day2

一、获取标签内的文本内容

1.1 选择文本

<ul id=”d1”>       <li>这是一个标签</li>       <li>这是一个标签</li>       <li>这是一个标签</li>       <li>这是一个标签</li></ul><p id=”d2”></p><ul id=”list”></ul>

innerText指的是获得标签之间的文本内容,但是低版本的火狐(firefox 42及之前)不支持innerText,而是用txetContent代替,IE8之前的浏览器不支持txetContent只支持innerText;

var ul = document.getElementById(“d1”);console.log(ul.innerText);                //chrome+(<=ie8)console.log(ul.txetContent);             // <=firefox42

innerHTML指的是获得标签中的内容,与innerText不同的是,如果标签嵌套了其他标签的话,会将标签也打印出来

console.log(ul.innerHTML); 

1.2 设置文本

var p=document.getElementById(“d2”);p.innerText = “这是一个设置p标签之间的内容”;p.textContent = “这是一个设置p标签之间的内容”;

同样的,设置文本时也同样存在兼容性你个问题,innerText是IE8及之前的浏览器版本支持的属性,但是低版本的火狐浏览器(42)不支持属性,而仅支持textContent,而IE8及之前的浏览器又不支持textContent,高版本的火狐浏览器其高版本的其它浏览器都支持这两个属性。

p.innerHTML = “这是一个设置p标签之间的内容”;

innerHTML没有兼容性的问题,是所有的浏览器都兼容的,仅仅是文本内容的时候显示的方式

当输入中包含标签时:

var ul2 = document.getElementById("list");ul2.innerText = "<li>123</li><li>456</li><li>789</li><li>sdfasd fas</li>"ul2.innerHTML = "<li>123</li><li>456</li><li>789</li><li>sdfasd fas</li>"; 

我们可以发现上面的例子中,> <这样的符号发生了转义。因此,直接解析成对应的li标签如果只有纯文本的时候,那么 innerText与innerHTML用法 是一样的如果文本内容里面有标签的时候,innerText会将标签进行转义,而innerHTML会将标签解析成对应的浏览器能够显示的样式

下面是使用innerTxet时的兼容封装

<ul id="d1">  <li>这是第1个li下的文本段</li>  <li>这是第2个li下的文本段</li>  <li>这是第3个li下的文本段</li>  <li>这是第4个li下的文本段</li>  <li>这是第5个li下的文本段</li></ul>var d1=document.getElementById(“d1”);function getText(element){  if(typeof element.innerText == “string”){    return element.innerText;  }else{    return element.textContent;  }}console.log(getText(d1));

上面是获得文本,下面是设置文本

<p id = ”d1”></p>var d1=document.getElementById(“d1”);function setText(value,element){  if(typeof element.innerText == “string”){    element.innerText = value;  }else{    element.txetContent = value;  }}var txt = “这是一个通过innerText添加的文本”;setText(txt,d1);

总结:

1、两种方式获取内容

innerHTML一定会把内容解析到DOM树上

—获取标签之间的内容(联标签都获取)

—设置标签之间的内容(直接渲染)

innerText(火狐中是textContent)一定对内容转义

—获取标签之间的内容(如果有标签忽略)

—设置标签之间的内容(如果有标签,转义)

2、innerHTML与innerText的区别

innerHTML

—会将获取到的内容原封不动的输出(包括标签)

—所有浏览器都支持

innerText

—只获取文本,会将标签过滤掉

—IE8之前支持,现在高版本浏览器都支持

textContent

—老版本火狐浏览器不支持innerText,支持textContent,现在都支持

二、重点案例

2.1 获取和设置文档的兼容性封装

 1 function  getText(element){ 2     if(typeof element.innerText=="string"){ 3         return   element.innerText; 4     }else{ 5         return  element.textContent; 6     } 7 } 8 function setText(element,value){ 9     if(typeof element.innerText=="string"){10         element.innerText = value;11     }else {12         element.textContent = value;13     }14 }

2.2 点击按钮禁用文本框

 1 <body> 2     <input type="text" value="http://www.mamicode.com/请输入..." id="txt"> 3     <button id="btn">禁用</button> 4     <script> 5         var txt = document.getElementById("txt"); 6         var btn = document.getElementById("btn"); 7         btn.onclick = function(){ 8             if(btn.innerHTML == "禁用"){ 9                 txt.disabled = true;10                 btn.innerHTML = "解除";11             }else{12                 txt.disabled = false;13                 btn.innerHTML = "禁用";14             }15         }16     </script>17 </body>

2.3 获得焦点清除文本框内容

 1 <body> 2 <input type="text" value="http://www.mamicode.com/请输入...." id="d1"/> 3 <script> 4     var txt = document.getElementById("d1"); 5     txt.onfocus = function () { 6         if (txt.value =http://www.mamicode.com/="请输入....") { 7             txt.valuehttp://www.mamicode.com/= ""; 8         } else { 9             txt.value =http://www.mamicode.com/ txt.value;10         }11     }12     txt.onblur = function () {13         if (txt.value =http://www.mamicode.com/="") {14             txt.valuehttp://www.mamicode.com/= "请输入....";15         } else {16             txt.value =http://www.mamicode.com/ txt.value;17         }18     }19 </script>20 </body>

2.4 给文本框赋值并获得文本框的内容

 1 <body> 2 <input type="text"/><br/> 3 <input type="text"/><br/> 4 <input type="text"/><br/> 5 <input type="text"/><br/> 6 <input type="text"/><br/> 7 <input type="text"/><br/> 8 <input type="text"/><br/> 9 <input type="text"/><br/>10 <input type="text"/><br/>11 <input type="text"/><br/>12 <input type="button" value="http://www.mamicode.com/给文本框赋值" id="btnSet"/>13 <input type="button" value="http://www.mamicode.com/获得文本框的值" id="btnGet"/>14 15 <script>16     var btnSet = document.getElementById("btnSet");17     var btnGet = document.getElementById("btnGet");18     var txts = document.getElementsByTagName("input");19     var arr = [];20     btnSet.onclick = function () {21         for (var i = 0; i < txts.length; i++) {22             if (txts[i].type == "text") {23                 txts[i].valuehttp://www.mamicode.com/= "a" + (i + 1);24                 arr[i] = txts[i].value;25             }26         }27     }28     btnGet.onclick = function () {29         console.log(arr.join("|"));30     }31 </script>32 </body>

2.5 检测用户名的输入

 1 <body> 2 用户名:<input type="text" id="userName"> <span id="sp1"></span><br/> 3 密码:<input type="text" id="userPwd"> <span id="sp2"></span><br/> 4 <input type="button" id="btn" value="http://www.mamicode.com/登陆"/> 5 <script> 6     var userName = document.getElementById("userName"); 7     var userPwd = document.getElementById("userPwd"); 8     var sp1 = document.getElementById("sp1"); 9     var sp2 = document.getElementById("sp2");10     var btn = document.getElementById("btn");11     btn.onclick = function () {12         if (userName.value.length > 6 || userName.value.length < 3) {13             if(userName.value.length==0){14                 sp1.innerHTML = "请输入用户名";15             }else{16                 userName.style.backgroundColor = "red";17                 sp1.innerHTML = "用户名的长度应该是在3--6位之间,请重新输入";18             }19         } else {20             sp1.innerHTML = "用户名格式正确";21             userName.style.backgroundColor = "";22             if (userPwd.value.length > 8 || userPwd.value.length < 6) {23                 if(userPwd.value.length==0){24                     sp2.innerHTML = "请输入密码";25                 }else{26                     sp2.innerHTML = "用户密码应该是在6--8位之间,请重新输入";27                     userPwd.style.backgroundColor = "red";28                 }29             } else {30                 sp2.innerHTML = "用户名密码格式正确";31                 userPwd.style.backgroundColor = "";32                 alert("登陆成功");33             }34         }35     }36 37 38 </script>39 </body>

2.6 全选反选

 1 <body> 2 <input type="checkbox"/> 3 <input type="checkbox"/> 4 <input type="checkbox"/> 5 <input type="checkbox"/> 6 <input type="checkbox"/> 7 <input type="checkbox"/> 8 <input type="checkbox"/> 9 <input type="checkbox"/>10 <input type="button" id="btnAll" value="http://www.mamicode.com/全选"/>11 <input type="button" id="btnNoSelect" value="http://www.mamicode.com/全不选"/>12 <input type="button" id="btnReverse" value="http://www.mamicode.com/反选"/>13 <script>14     var btnAll = document.getElementById("btnAll");15     var btnNoSelct = document.getElementById("btnNoSelect");16     var btnReverse = document.getElementById("btnReverse");17     var inputs = document.getElementsByTagName("input");18     btnAll.onclick = function(){19         for(var i = 0;i < inputs.length;i++){20             if(inputs[i].type == "checkbox"){21                 inputs[i].checked = true;22             }23         }24     }25     btnNoSelct.onclick = function(){26         for(var i = 0;i < inputs.length;i++){27             if(inputs[i].type == "checkbox") {28                 inputs[i].checked = false;29             }30         }31     }32     btnReverse.onclick = function(){33         for(var i = 0;i < inputs.length;i++) {34             if (inputs[i].type == "checkbox") {35                 inputs[i].checked = !inputs[i].checked;36             }37         }38     }39 </script>40 </body>

2.7 排它

<body><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><input type="button" value="http://www.mamicode.com/按钮"/><script>    var btns=document.getElementsByTagName("input");    for(var i=0;i<btns.length;i++){        btns[i].onclick=function(){            for(var i=0;i<btns.length;i++){                btns[i].style.backgroundColor="";            }            this.style.backgroundColor="red";        }    }</script></body>

2.8 tab栏切换

 1 <!DOCTYPE html> 2 <html> 3 <head lang="en"> 4     <meta charset="UTF-8"> 5     <title></title> 6     <style> 7         .Box { 8             width: 240px; 9             border: 1px solid #000;10             margin: 100px auto;11             padding: 20px;12         }13 14         .con {15             width: 100%;16             height: 200px;17             background-color: #cccccc;18             border: 1px solid #000;19             margin-top: 10px;20             display: none;21         }22 23         .current {24             background-color: pink;25         }26     </style>27 </head>28 <body>29 <div class="Box" id="box">30     <button class="current">按钮1</button>31     <button>按钮2</button>32     <button>按钮3</button>33     <button>按钮4</button>34     <div class="con" style="display:block">内容1</div>35     <div class="con">内容2</div>36     <div class="con">内容3</div>37     <div class="con">内容4</div>38 </div>39 <script>40     var btns = document.getElementsByTagName("button");41     var box = document.getElementById("box");42     var cons = box.getElementsByTagName("div");43     for (var i = 0; i < btns.length; i++) {44         btns[i].index = i;45         btns[i].onclick = function () {46             for (var j = 0; j < btns.length; j++) {47                 btns[j].className = "";48                 cons[j].style.display="none";49             }50             this.className = "current";51             cons[this.index].style.display="block";52         }53     }54 </script>55 </body>56 </html>

2.9 点餐

  1 <!DOCTYPE html>  2 <html>  3 <head lang="en">  4     <meta charset="UTF-8">  5     <title></title>  6     <style>  7         * {  8             margin: 0;  9             padding: 0; 10         } 11  12         .wrap { 13             width: 300px; 14             margin: 100px auto; 15         } 16  17         table { 18             border-collapse: collapse; /*倒塌,合并边框*/ 19             border-spacing: 0; /*边框间隔*/ 20             border: 1px solid #c0c0c0; 21             width: 300px; 22         } 23  24         th, td { 25             border: 1px solid #d0d0d0; 26             padding: 10px; 27         } 28  29         th { 30             background-color: #09c; 31             font: bold 16px "微软雅黑"; 32             color: #fff; 33         } 34  35         td { 36             font: 14px "微软雅黑"; 37         } 38  39         tbody tr { 40             background-color: #f0f0f0; 41         } 42  43         tbody tr:hover { 44             cursor: pointer; 45             background-color: #fafafa; 46         } 47     </style> 48 </head> 49 <body> 50 <div class="wrap"> 51     <table> 52         <thead> 53         <tr> 54             <th> 55                 <input type="checkbox" name="" id="j_cbAll"/> 56             </th> 57             <th>菜名</th> 58             <th>饭店</th> 59         </tr> 60         </thead> 61         <tbody id="j_tb"> 62         <tr> 63             <td> 64                 <input type="checkbox"/> 65             </td> 66             <td>红烧肉</td> 67             <td>田老师</td> 68         </tr> 69         <tr> 70             <td> 71                 <input type="checkbox"/> 72             </td> 73             <td>西红柿炒鸡蛋</td> 74             <td>田老师</td> 75         </tr> 76         <tr> 77             <td> 78                 <input type="checkbox"/> 79             </td> 80             <td>红烧狮子头</td> 81             <td>田老师</td> 82         </tr> 83         <tr> 84             <td> 85                 <input type="checkbox"/> 86             </td> 87             <td>日式肥牛</td> 88             <td>田老师</td> 89         </tr> 90         </tbody> 91     </table> 92 </div> 93 <script> 94     var btnAll = document.getElementById("j_cbAll"); 95     var btnTb = document.getElementById("j_tb"); 96     var inputs = btnTb.getElementsByTagName("input"); 97     btnAll.onclick = function () { 98         if (btnAll.checked) { 99             for (var i = 0; i < inputs.length; i++) {100                 inputs[i].checked = true;101             }102         } else {103             for (var i = 0; i < inputs.length; i++) {104                 inputs[i].checked = false;105             }106         }107     }108     for (var j = 0; j < inputs.length; j++) {109         inputs[j].onclick = function () {110             var isBtnAll = true;111             for (var k = 0; k < inputs.length; k++) {112                 if (!inputs[k].checked) {113                     isBtnAll = false;114                     break;115                 }116             }117             btnAll.checked = isBtnAll;118         }119     }120 121 </script>122 </body>123 </html>

DOM day2