javascript事件流講解和執行個體應用

來源:互聯網
上載者:User

標籤:

javascript事件流講解和執行個體應用

  當頁面元素觸發事件的時候,該元素的容器以及整個頁面都會按照特定
  順序響應該元素的觸發事件,事件傳播的順序叫做事件流。

一、事件流的分類

    1.冒泡型事件(所有的瀏覽器都支援 w3c標準)
        
      由明確的事件來源到最不確定的事件來源依次向上觸發,有內向外。

    2.捕獲型事件(IE不支援 w3c標準 Firefox)
      不確定的事件來源到明確的事件來源依次向下觸發,由外向內。
       addEventListener(事件,處理函數,false)
       addEventListener(事件,處理函數,true)

二、阻止事件流
   
    IE:
    事件對象.cancelBubble=true;   
    FF:
     事件對象.stopPropagation();

三、目標事件來源的對象
    IE:事件對象.srcElement
    FF:事件對象.target
例:
<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
    table {
        margin: 0 auto;
    }
    td{
        text-align: center;
    }
    </style>
    <script type="text/javascript">
        window.onload = function (){
            var tbl = document.getElementById("tbl");
            tbl.ondblclick = function(e){
                var vc = e || window.event;
                var ov = vc.srcElement || vc.target;
                if(ov.nodeName == "TH"){
                    return;
                }
                var oldstr = ov.innerHTML;
                var txts = document.createElement("input");
                txts.type = "text";
                ov.innerHTML = "";
                ov.appendChild(txts);
                txts.focus();
                txts.onblur = txts.ondblclick = txts.onkeydown = function(e){
                    var vc = e || window.event;
                    if(vc.type == "blur" || (vc.type == "keydown" && vc.keyCode == "13")){
                        var str;
                        if(txts.value.trim() == ""){
                            str = oldstr;
                        }else{
                            str = txts.value;
                        }
                        ov.removeChild(txts);
                        ov.innerHTML = str;
                    }
                }
            }
        }
    </script>
</head>
<body>
       <table id="tbl" border="1" width="700" cellpadding="10" cellspacing="0" >
           <caption>學產生績單</caption>
           <tr>
               <th>姓名</th>
               <th>年齡</th>
               <th>性別</th>
               <th>科目</th>
               <th>分數</th>
           </tr>
           <tr >
               <td>張三</td>
               <td>21</td>
               <td>男</td>
               <td>JavaScript</td>
               <td>86</td>
           </tr>
           <tr>
               <td>李四</td>
               <td>22</td>
               <td>女</td>
               <td>CSS</td>
               <td>94</td>
           </tr>
           <tr>
               <td>大二</td>
               <td>20</td>
               <td>女</td>
               <td>HTML</td>
               <td>89</td>
           </tr>
       </table>
</body>
</html>

    
     

javascript事件流講解和執行個體應用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.