• javascript事件流讲解和实例应用


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

        
         

  • 相关阅读:
    Effective Java 第三版——39. 注解优于命名模式
    代码优化的一点总结
    Memcached 服务器端命令
    我是个老爸--当局者迷,旁观者清
    对于大数据大流量情况下微软架构的水平扩展的遐想(瞎想)
    微信快速开发框架(五)-- 利用快速开发框架,快速搭建微信浏览博客园首页文章
    微信快速开发框架(四)-- 体验微信公众平台快速开发框架
    微信快速开发框架(三)-- 建立微信公众平台测试账号
    微信快速开发框架(二) -- 快速开发微信公众平台框架---简介
    微信快速开发框架(一)-- 对微信公众平台开发的消息处理
  • 原文地址:https://www.cnblogs.com/wangjie-01/p/4665656.html
Copyright © 2020-2023  润新知