【JavaScript】之DOM编程

96 阅读1分钟

本文已参与[新人创作礼]活动,一起开启掘金创作之路。

哈喽,大家好!我是Why,一名在读学生,目前刚刚开始进入自己的编程学习生涯。虽然学习起步较晚,但我坚信做了才有0或1的可能。学了一段时间以后也是选择在掘金上分享自己的日常笔记,也希望能够在众多道友的大家庭中打成一片。 本文主要讲解*【JavaScript】之DOM编程*,如果大家读后觉得有用的话,还请大家多多支持博主:欢迎 ❤️点赞👍、收藏⭐、留言💬 ✨✨✨个人主页:JinHuan

DOM编程

获取文本框的value

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>获取文本框的value</title>
     </head>
     <body>
         <script type="text/javascript">
             /*
                 1、JavaScript包括三大块:
                     ECMAScript:JS的核心语法(ES规范 / ECMA-262标准)
                     DOM:Document Object Model(文档对象模型:对网页当中的节点进行增删改的过程。)HTML文档被当做一棵DOM树来看待。
                         var domObj = document.getElementById("id");
                     BOM:Browser Object Model(浏览器对象模型)
                         关闭浏览器窗口、打开一个新的浏览器窗口、后退、前进、浏览器地址栏上的地址等,都是BOM编程。
                 2、DOM和BOM的区别和联系?
                     BOM的顶级对象是:window
                     DOM的顶级对象是:document
                     实际上BOM是包括DOM的!
             */
            /*
            window.onload = function(){
                //var btnElt = window.document.getElementById("btn");
                var btnElt = document.getElementById("btn");
                alert(btnElt); // object HTMLInputElement
            }
            */
           
           window.onload = function(){
               var btnElt = document.getElementById("btn");
               btnElt.onclick = function(){
                   /*
                   // 获取username节点
                   var usernameElt = document.getElementById("username");
                   var username = usernameElt.value;
                   alert(username);
                   */
                  // alert(document.getElementById("username").value);
                  
                  // 可以修改它的value
                  document.getElementById("username").value = "zhangsan";
               }
           }
         </script>
         
         <!--
         <input type="button" id="btn" value="hello" />
         -->
         
         <input type="text" id="username" />
         <input type="button" value="获取文本框的value" id="btn"/>
         
         <hr>
         
         <script type="text/javascript">
             window.onload = function(){
                 document.getElementById("setBtn").onclick = function(){
                     document.getElementById("username2").value = document.getElementById("username1").value;
                 }
             }
         </script>
         
         <input type="text" id="username1" />
         <br>
         <input type="text" id="username2" />
         <br>
         <input type="button" value="将第一个文本框中的value赋值到第二个文本框上" id="setBtn" />
         
         <!--blur事件:失去焦点事件-->
         <!--以下代码中的this代表的是当前input节点对象,this.value就是这个节点对象的value属性。-->
         <input type="text" onblur="alert(this.value)" />
         
     </body>
 </html>
 ​

innerHTML和innerText操作div和span

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>DOM编程-innerHTML和innerText操作div和span</title>
         <style type="text/css">
             #div1{
                 background-color: aquamarine;
                 width: 300px;
                 height: 300px;
                 border: 1px black solid;
                 position: absolute;
                 top: 100px;
                 left: 100px;
             }
         </style>
     </head>
     <body>
         <!--
             innerText和innerHTML属性有什么区别?
                 相同点:都是设置元素内部的内容。
                 不同点:
                     innerHTML会把后面的“字符串”当做一段HTML代码解释并执行。
                     innerText,即使后面是一段HTML代码,也只是将其当做普通的字符串来看待。
         -->
         <script type="text/javascript">
             window.onload = function(){
                 var btn = document.getElementById("btn");
                 btn.onclick = function(){
                     // 设置div的内容
                     // 第一步:获取div对象
                     var divElt = document.getElementById("div1");
                     // 第二步:使用innerHTML属性来设置元素内部的内容
                     // divElt.innerHTML = "fjdkslajfkdlsajkfldsjaklfds";
                     // divElt.innerHTML = "<font color='red'>用户名不能为空!</font>";
                     divElt.innerText = "<font color='red'>用户名不能为空!</font>";
                 }
             }
         </script>
         
         <input type="button" value="设置div中的内容" id="btn"/>
         
         <div id="div1"></div>
         
     </body>
 </html>
 ​

去除字符串的前后空白

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>去除字符串的前后空白</title>
     </head>
     <body>
         <script type="text/javascript">
             // 低版本的IE浏览器不支持字符串的trim()函数,怎么办?
             // 可以自己对String类扩展一个全新的trim()函数!
             String.prototype.trim = function(){
                 // alert("扩展之后的trim方法");
                 // 去除当前字符串的前后空白
                 // 在当前的方法中的this代表的就是当前字符串.
                 //return this.replace(/^\s+/, "").replace(/\s+$/, "");
                 return this.replace(/^\s+|\s+$/g, "");
             }
             
             window.onload = function(){
                 document.getElementById("btn").onclick = function(){
                     // 获取用户名
                     var username = document.getElementById("username").value;
                     // 去除前后空白
                     username = username.trim();
                     // 测试
                     alert("--->" + username + "<----");
                 }
             }
         </script>
         <input type="text" id="username" />
         <input type="button" value="获取用户名" id="btn" />
     </body>
 </html>
 ​

复选框的全选和取消全选

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>复选框的全选和取消全选</title>
     </head>
     <body>
         <script type="text/javascript">
             /*
             window.onload = function(){
                 var firstChk = document.getElementById("firstChk");
                 firstChk.onclick = function(){
                     // 获取第一个复选框的选中状态(复选框对象checkbox对象)
                     //alert(firstChk.checked);
                     // 根据name获取所有元素
                     var aihaos = document.getElementsByName("aihao");
                     if(firstChk.checked){
                         // 全选
                         for(var i = 0; i < aihaos.length; i++){
                             aihaos[i].checked = true;
                         }
                     }else{
                         // 取消全选
                         for(var i = 0; i < aihaos.length; i++){
                             aihaos[i].checked = false;
                         }
                     }
                 }
             }
             */
            
             window.onload = function(){
                 
                 var aihaos = document.getElementsByName("aihao");
                 var firstChk = document.getElementById("firstChk");
                 firstChk.onclick = function(){
                     for(var i = 0; i < aihaos.length; i++){
                         aihaos[i].checked = firstChk.checked;
                     }
                 }
                 
                 // 对以上数组进行遍历
                 var all = aihaos.length;
                 for(var i = 0; i < aihaos.length; i++){
                     aihaos[i].onclick = function(){
                         var checkedCount = 0;
                         // 总数量和选中的数量相等的时候,第一个复选框选中.
                         for(var i = 0; i < aihaos.length; i++){
                             if(aihaos[i].checked){
                                 checkedCount++;
                             }
                         }
                         firstChk.checked = (all == checkedCount);
                         /*
                         if(all == checkedCount){
                             firstChk.checked = true;
                         }else{
                             firstChk.checked = false;
                         }
                         */
                     }
                 }
             }
         </script>
         <input type="checkbox" id="firstChk"/><Br>
         <input type="checkbox" name="aihao" value="smoke" />抽烟<Br>
         <input type="checkbox" name="aihao" value="drink" />喝酒<Br>
         <input type="checkbox" name="aihao" value="tt" />烫头<Br>
     </body>
 </html>
 ​

获取下拉列表选中项的value

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>获取下拉列表选中项的value</title>
     </head>
     <body>      
         <script type="text/javascript">
             window.onload = function(){
                 var provinceListElt = document.getElementById("provinceList");
                 provinceListElt.onchange = function(){
                     // 获取选中项的value
                     alert(provinceListElt.value);
                 }
             }
         </script>
         <select id="provinceList">
             <option value="">--请选择省份--</option>
             <option value="001">河北省</option>
             <option value="002">河南省</option>
             <option value="003">山东省</option>
             <option value="004">山西省</option>
         </select>
         
     </body>
 </html>

Date类显示事件日期

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>显示网页时钟</title>
     </head>
     <body>
         <script type="text/javascript">
             /*
                 关于JS中内置的支持类:Date,可以用来获取时间/日期。
             */
            // 获取系统当前时间
            var nowTime = new Date();
            // 输出
            // document.write(nowTime);
            // 转换成具有本地语言环境的日期格式.
            nowTime = nowTime.toLocaleString();
            document.write(nowTime);
            document.write("<br>");
            document.write("<br>");
            // 当以上格式不是自己想要的,可以通过日期获取年月日等信息,自定制日期格式.
            var t = new Date();
            var year = t.getFullYear(); // 返回年信息,以全格式返回.
            var month = t.getMonth(); // 月份是:0-11
            // var dayOfWeek = t.getDay(); // 获取的一周的第几天(0-6)
            var day = t.getDate(); // 获取日信息.
            document.write(year + "年" + (month+1) + "月" + day + "日");
            
            document.write("<br>");
            document.write("<br>");
            
            // 重点:怎么获取毫秒数?(从1970年1月1日 00:00:00 000到当前系统时间的总毫秒数)
            //var times = t.getTime();
            //document.write(times); // 一般会使用毫秒数当做时间戳. (timestamp)
            
            document.write(new Date().getTime());
            
         </script>
         
         <script type="text/javascript">
             function displayTime(){
                 var time = new Date();
                 var strTime = time.toLocaleString();
                 document.getElementById("timeDiv").innerHTML = strTime;
             }
             
             // 每隔1秒调用displayTime()函数
             function start(){
                 // 从这行代码执行结束开始,则会不间断的,每隔1000毫秒调用一次displayTime()函数.
                 v = window.setInterval("displayTime()", 1000);  
             }
             
             function stop(){
                 window.clearInterval(v);
             }
         </script>
         <br><br>
         <input type="button" value="显示系统时间" onclick="start();"/>
         <input type="button" value="系统时间停止" onclick="stop();" />
         <div id="timeDiv"></div>
     </body>
 </html>
 ​

数组Array

 <!DOCTYPE html>
 <html>
     <head>
         <meta charset="utf-8">
         <title>内置支持类Array</title>
     </head>
     <body>
         <script type="text/javascript">
             /*
             // 创建长度为0的数组
             var arr = [];
             alert(arr.length);
             
             // 数据类型随意
             var arr2 = [1,2,3,false,"abc",3.14];
             alert(arr2.length);
             
             // 下标会越界吗
             arr2[7] = "test"; // 自动扩容.
             
             document.write("<br>");
             
             // 遍历
             for(var i = 0; i < arr2.length; i++){
                 document.write(arr2[i] + "<br>");
             }
             
             // 另一种创建数组的对象的方式
             var a = new Array();
             alert(a.length); // 0
             
             var a2 = new Array(3); // 3表示长度.
             alert(a2.length);
             
             var a3 = new Array(3,2);
             alert(a3.length); // 2
             */
            
            var a = [1,2,3,9];
            var str = a.join("-");
            alert(str); // "1-2-3-9"
            
            // 在数组的末尾添加一个元素(数组长度+1)
            a.push(10);
            alert(a.join("-"));
            
            // 将数组末尾的元素弹出(数组长度-1)
            var endElt = a.pop();
            alert(endElt);
            alert(a.join("-"));
            
            // 注意:JS中的数组可以自动模拟栈数据结构:后进先出,先进后出原则.
            // push压栈
            // pop弹栈
            
            // 反转数组.
            a.reverse();
            alert(a.join("="));
         </script>
     </body>
 </html>
 ​