博客列表 >事件代理机制及留言板编写-2019年07月11日

事件代理机制及留言板编写-2019年07月11日

牛niu轰轰的blog
牛niu轰轰的blog原创
2019年07月27日 14:33:38601浏览

 

  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>

运行实例 »

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

 

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议