javascript事件流讲解和实例应用

  当页面元素触发事件的时候,该元素的容器以及整个页面都会按照特定
  顺序响应该元素的触发事件,事件传播的顺序叫做事件流。

一、事件流的分类

    1.冒泡型事件(所有的浏览器都支持 w3c标准)
        
      由明确的事件源到最不确定的事件源依次向上触发,有内向外。

    2.捕获型事件(IE不支持 w3c标准 火狐)
      不确定的事件源到明确的事件源依次向下触发,由外向内。
       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>
                        </table>
</body>
</html>

原文地址:https://www.cnblogs.com/lastorder/p/4665825.html