Blogger Information
Blog 18
fans 0
comment 0
visits 13761
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
事件代理机制及留言板编写-2019年07月11日
牛niu轰轰的blog
Original
596 people have browsed it

 

  1. 实例演示你对事件代理机制的理解?
    提示, 从事件冒泡与DOM结构二方面进行分析

  2. 实例

    <!DOCTYPE html>
    <html lang="cn_zh">
    <head>
        <meta charset="UTF-8">
        <title>留言本</title>
    </head>
    <body>
    <label for="comment">留言本</label>
    <input type="text" name="comment" id="comment" autofocus>
    <ul id="list"></ul>
    <script>
        var comment = document.getElementById('comment');
        var ul = document.getElementById('list');
        comment.addEventListener('keypress',getvalue,false);
        function getvalue(event) {
            if (event.key==='Enter') {
            var li = document.createElement('li');
                li.innerHTML = comment.value +  '  <button>删去</button>';
            if (ul.childElementCount === 0) {ul.appendChild(li);
                comment.value = null;}else{
                ul.insertBefore(li,ul.firstElementChild);
                comment.value = null;
            }
    
            }
        }
        ul.addEventListener("click", del,false);
        function del(event) {
            if ( confirm("你确定删去?")) {
                event.currentTarget.removeChild(event.target.parentElement);
            }
    
        }
    
    
    
    </script>
    </body>
    </html>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  3.  模仿留言板案例, 利用学过的CSS知识, 写一个美观的留言板页面, 并使用JavaScript完成基本的留言添加与删除功能...

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>留言板</title>
</head>
<body>
<label for="comment">请留言:</label>
<input type="text" id="comment" autofocus>

<ul id="list">
    <!--<li>123</li>-->
    <!--<li>456</li>-->
</ul>
<script>
    // 键盘事件:keydown/keyup/keypress
    var comment = document.getElementById('comment');
    // 留言框
    var list = document.getElementById('list');
    // 为留言框添加事件监听
    comment.addEventListener('keypress',addComment1,false);
      // function addComment(ev){
    //         // 事件方法中有一个默认的参数就是事件对象:ev,evt,event
    //         console.log(ev.key);
    //         if(event.key === 'Enter'){
    //             // 1.创建一个li元素
    //             var item = document .createElement('li');
    //             // 2.添加内容
    //             item.innerText = comment.value;
    //             // 3.将留言添加到页面中
    //             list.appendChild(item);
    //             // 4.清空留言板
    //             comment.value = null;
    //         }



                  // 改进事件方法
          function addComment1(ev){
              // 事件方法中有一个默认的参数就是事件对象:ev,evt,event
              console.log(ev.key);
              if(event.key === 'Enter'){
                  // 1.创建一个li元素
                  var item = document .createElement('li');
                  // 2.添加内容
                  item.innerHTML = comment.value + '  <button>删除</button>';
                  // item.innerHTML与item.innerText区别:
                  // 前者可以将html可以将一段含有html的文本解析为html元素,并添加到标签中,
                  // 3.将留言添加到页面中
                  if(list.childElementCount === 0){
                      list.appendChild(item);
                      // 当前没有留言时,直接添加
                  }else{

                      list.insertBefore(item,list.firstElementChild);
                      // 格式:parentNode.insertBefore(newNode,firstElementChild);
                      // 将新插入节点放在第一个子节点前,在父节点上调用的方法
                  }

                  // 4.清空留言板
                  comment.value = null;
              }
    }

    // 事件代理,添加删除按钮的动作
    list.addEventListener('click',del,false);
          function del(event) {
              if (confirm('是否删除?')){
              //     var ul = event.currentTarget;
              //     // 父节点
              //     var btn = event.target;
              //     // 当前正在触发事件的元素,正在被点击的;
              //     var li = btn.parentElement;
              //     ul.removeChild(li);
              // }
              event.currentTarget.removeChild(event.target.parentElement);
              }
              // return false;
              //   默认false
          }



</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例

 

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post