zoukankan      html  css  js  c++  java
  • 事件冒泡 --- 仿select下拉框

    要求:点击按钮时,下拉框显示;点击页面其他部分时,下拉框消失;

    1. 不靠谱代码

     1 <!DOCTYPE html>
     2 <html>
     3 <head lang="en">
     4     <meta charset="UTF-8">
     5     <title></title>
     6     <style>
     7         #div1 {
     8             width: 400px;
     9             height: 300px;
    10             background-color: #ccc;
    11             display: none;
    12         }
    13     </style>
    14     <script>
    15         window.onload = function () {
    16             var oBtn = document.getElementById("btn1");
    17             var oDiv = document.getElementById("div1");
    18 
    19             oBtn.onclick = function () {
    20                 oDiv.style.display = "block";
    21             };
    22             document.onclick = function () {
    23                 oDiv.style.display = "none";
    24             };
    25         }
    26     </script>
    27 </head>
    28 <body>
    29     <input id="btn1" type="button" value="show" />
    30     <div id="div1"></div>
    31 </body>
    32 </html>

    不靠谱原因:当点击按钮时,(1)点击事件在btn上触发并执行,此时下拉框显示;(2)事件一直向上冒泡,并遇到了定义在document上的点击事件,触发并执行,此时下拉框不显示;

    2. 解决方案 --- 组织事件冒泡(event.cancelBubble = true)

    1 oBtn.onclick = function (event) {
    2        oDiv.style.display = "block";
    3        event.cancelBubble = true;
    4 };
  • 相关阅读:
    AJAX 大全
    has value '1.8', but '1.7' is required
    VS2010官方下载地址
    win10桌面显示我的电脑
    使用 CAST
    for循环+canvas实现黑客帝国矩形阵
    C# Lambda
    win7系统部分便笺的元数据已被损坏怎么恢复
    SQL查询所有表,所有列
    truncate和delete之间有什么区别
  • 原文地址:https://www.cnblogs.com/linxd/p/4561028.html
Copyright © 2011-2022 走看看