javascript - 使用JS事件委托无法生效
天蓬老师
天蓬老师 2017-04-11 09:49:24
[JavaScript讨论组]

1.使用事件委托只能生效一次,后续点击没反应,再次点击左侧添加或者右侧添加无任何报错也没有任何反应

2.代码:

<!DOCTYPE html>
<html>
<head>
  <title>js6</title>
  <meta charset="utf-8">
  <style type="text/css">
    p {
      display: inline-block;
      color: #fff;
      background-color: red;
      margin: 0 5px;
      padding: 5px;
    }
  </style>
</head>
<body>
<p id="father">
<input id="num-input" type="text" name="inputBox">
<button id="add-left" type="button" >左侧添加</button>
<button id="add-right" type="button" >右侧添加</button>
<button id="del-left" type="button" >左侧删除</button>
<button id="del-right" type="button" >右侧删除</button>
</p>
<p id="content">
</p>
<script>

  var cont = document.getElementById("content");
  var num = document.getElementById("num-input");
  var fap = document.getElementById("father");
  var createEle = document.createElement("p");
  var inputText = num.value;
  var createText = document.createTextNode(inputText);
  fap.onclick = function (e) {
    var e = e || window.e;
    var target = e.target || e.srcElement;
    if (target.nodeName.toLowerCase() == "button") {
      switch(target.id){
        case "add-left" :
          createEle.appendChild(createText);
          var firstNode = cont.firstElementChild;
          cont.insertBefore(createEle,firstNode);
          break;
        case "add-right" :
          createEle.appendChild(createText);
          var firstNode = cont.firstElementChild;
          cont.appendChild(createEle);
          break;
        case "del-left" :
          var firstNode = cont.firstElementChild;
          cont.removeChild(firstNode);
          break;
        case "del-right" :
          var lastNode = cont.lastElementChild;
          cont.removeChild(lastNode);
          break;
      }

    }
  }

</script>
</body>
</html>
天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(1)
迷茫

你创建的这些元素都在onclick外面,那元素就创建一次啊,一直append、insert同一个元素当然看起来是『没反应』的,你可以把创建元素的这些代码移到onClick里面就行啦

var createEle = document.createElement("p");
var inputText = num.value;
var createText = document.createTextNode(inputText);

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号