• 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>

  • 相关阅读:
    Dockerfile
    最近遇到的jsfl开发问题总结
    【Distributed】大型网站高并发和高可用
    【Distributed】CDN
    【Distributed】限流技巧
    【Java并发】锁机制
    【Java并发】线程通信
    【Java并发】线程安全和内存模型
    【Java并发】基础
    【Redis】基本数据类型及命令操作(超详细)
  • 原文地址:https://www.cnblogs.com/lastorder/p/4665825.html
Copyright © 2020-2023  润新知