JS DOM事件

136 阅读4分钟

1、html事件

关于this指向:在事件触发的函数中,this是对该DOM对象的引用;

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>       .btn{width:140px;height:30px;line-height: 30px;background:#00f;        color:#fff;font-size:14px;text-align:center;border-radius:5px;        cursor:pointer;margin-top:30px;}    </style></head><body>    <input type="button" value="弹 出" onclick="alert('我是按钮')">    <!--鼠标划过按钮时调用mouseoverFn的函数-->    <div class="btn" onmouseover="mouseoverFn(this,'#f00')" onmouseout="mouseoutFn(this,'#ff0')">开始</div>    <div class="btn" onmouseover="mouseoverFn(this,'#0f0')" onmouseout="mouseoutFn(this,'#333')">结束</div>    <script>        function mouseoverFn(btn,bgColor){            // 鼠标划过按钮时,按钮的背景变为红色            btn.style.background=bgColor;        }        function mouseoutFn(btn,bgColor){            btn.style.background=bgColor;        }    </script></body></html>

2、DOM0级事件

1、通过DOM获取HTML元素;

2、(获取HTML).事件=执行脚本

语法:ele.事件 = 执行脚本

功能:在DOM对象上绑定事件

说明:执行脚本可以是一个匿名函数,也可以是一个函数的函数的调用;

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>       .lock{width:140px;height:30px;line-height: 30px;background:#00f;        color:#fff;font-size:14px;text-align:center;border-radius:5px;        cursor:pointer;margin-top:30px;}        .unlock{width:140px;height:30px;line-height: 30px;background:#666;            color:#ccc;font-size:14px;text-align:center;border-radius:5px;            cursor:pointer;margin-top:30px;}    </style></head><body>    <div class="lock" id="btn">锁定</div>    <script>        // 获取按钮        var btn=document.getElementById("btn");        function clickBtn(){           alert("我是按钮");        }        // 点击按钮调用clickBtn这个函数        btn.onclick=clickBtn;        // 给按钮绑定事件,this是对该DOM元素的引用        /*btn.onclick=function(){           // 判断如果按钮是锁定,则显示为解锁,变为灰色,否则显示为锁定,变为蓝色           if(this.className=="lock"){               this.className="unlock";               this.innerHTML="解锁";           }else{               this.className="lock";               this.innerHTML="锁定";           }           if(this.innerHTML=="锁定"){               this.className="unlock";               this.innerHTML="解锁";           }else{               this.className="lock";               this.innerHTML="锁定";           }        }*/    </script></body></html>

3、事件类型:

鼠标事件

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <script>       // 页面加载时执行,unload页面卸载       window.onload=function(){         // 获取box         var box=document.getElementById("box");         var clicked=function(){              alert('我被点击了');         }         box.onclick=clicked;       }    </script></head><body>    <div id="box">这是一个DIV</div></body></html>

3、onchange事件

<!doctype html><html lang="en"><head>   <meta charset="UTF-8">   <title>Document</title>   <style>       .box{           padding:50px;       }       .left,.tip{           float:left;       }       .left{margin-right:10px;}       .tip{display:none;font-size:14px;}   </style>   <script>       window.onload=function(){           // 获取文本框和提示框           var phone=document.getElementById("phone"),              tip=document.getElementById("tip");          // 给文本框绑定激活的事件          phone.onfocus=function(){              // 让tip显示出来              tip.style.display='block';          }          // 给文本框绑定失去焦点的事件          phone.onblur=function(){             // 获取文本框的值,value用于获取表单元素的值             var phoneVal=this.value;             // 判断手机号码是否是11位的数字             // 如果输入正确,则显示对号图标,否则显示错号图标             if(phoneVal.length==11 && isNaN(phoneVal)==false){                tip.innerHTML='<img src="img/right.png">';             }else{               tip.innerHTML='<img src="img/error.png">';             }          }       }   </script></head><body>   <div class="box">      <div class="left">         <input type="text" id="phone" placeholder="请输入手机号码">      </div>      <div class="tip" id="tip">           请输入有效的手机号码      </div>   </div></body></html>

4、键盘事件

<!doctype html><html lang="en"><head>    <meta charset="UTF-8">    <title>Document</title>    <style>       .text span{font-weight:bold;color:#f00;}       em{font-style:normal;}       b{font-weight:normal;}    </style></head><body>    <div>        <p class="text">            <b id="showcount">您还可以输入</b>            <span id="totalbox"><em id="count">30</em>/30</span>        </p>        <div class="input">            <textarea name="" id="text" cols="70" rows="4"></textarea>        </div>    </div>    <script>       // 获取文本框及其他元素       var text=document.getElementById("text");       var total=30;       var count=document.getElementById("count");       var showcount=document.getElementById("showcount");       var totalbox=document.getElementById("totalbox");       // 绑定键盘事件       document.onkeyup=function(){          // 获取文本框值的长度          var len=text.value.length;          // 计算可输入的剩余字符          var allow=total-len;          var overflow=len-total;          // 如果allow小于0          if(allow<0){              showcount.innerHTML="您已超出"+overflow;              totalbox.innerHTML='';          }else{              showcount.innerHTML='您还可以输入';              totalbox.innerHTML='<em id="count">'+allow+'</em>/30';          }       }    </script></body></html>