zoukankan      html  css  js  c++  java
  • js动态添加的元素绑定事件

    最近做的项目要实现一个动态添加动态删除的功能,思考了一下,该怎么给动态添加的元素绑定事件。最后觉得有两种方式比较可靠,第一种是在动态添加的html代码里添加oclick事件,然后给传个唯一的参数来判断点击了哪个,然后做相应的操作,第二种是通过事件委托的原理来处理,事件委托将一个事件侦听器实际绑定到整个容器,然后在单击它时能够访问每个列表项,这种更高效一些

    具体的代码实现如下:

    第一:onclick

     1 <body>
     2     <button onclick="AddJob()">添加工作经历</button>
     3     <button onclick="GetJobs()">获取全部工作</button>
     4 
     5     <div id="joblist">
     6         <div id="job1" class="job">
     7             <input name="CompanyName" type="text" value="公司1" />
     8             <button onclick="DelJob(1)">删除</button>
     9         </div>
    10     </div>
    11     <script type="text/javascript">
    12         //添加工作经历
    13         function AddJob() {
    14             var timestamp = parseInt((new Date()).valueOf()); //唯一的标识
    15             console.log(parseInt((new Date()).valueOf()));
    16             document.getElementById("joblist").innerHTML +=
    17                 `<div id="job` + timestamp + `" class="job">
    18                      <input name="CompanyName" type="text" value="公司` + timestamp + `" />
    19                      <button onclick="DelJob(` + timestamp + `)">删除</button>
    20                  </div>`;
    21         }
    22         //删除工作经历
    23         function DelJob(timestamp) {
    24             document.getElementById("job" + timestamp).remove();
    25         }
    26         //获取全部工作经历
    27         function GetJobs() {
    28             var jobs = document.getElementsByClassName("job");
    29             var arr = [];
    30             for (var i = 0; i < jobs.length; i++) {
    31                 var job = jobs[i];
    32                 var companyName = job.children[0].value;
    33                 arr.push(companyName);
    34             }
    35             console.log(arr);
    36             alert(arr);
    37         }
    38     </script>
    39 </body>

    第二种:事件委托

    1 document.getElementById('joblist').addEventListener('click', function (ev) {
    2         var target = ev.target || ev.srcElement;
    3         if (target.nodeName.toLowerCase() == 'button') {
    4             var e = document.getElementById(target.parentNode.id);
    5             document.getElementById("joblist").removeChild(e);
    6         }
    7     });

    不积跬步无以至千里
  • 相关阅读:
    2020全球C++及系统软件技术大会成功落下帷幕
    人工智能能力提升指导总结
    ABAP FUNCTION GUI_DOWN实际应用
    MySQL 数据库基础(二)(MySQL 服务基础与使用 MySQL 数据库)
    【推荐】开源项目ElasticAmbari助力 ElasticSearch、Kibana、ambari服务高效运维管理
    使用navicat连接oracle数据库遇到问题及解决方法
    cv::mat 保存sqlite数据库,使用qt
    工作总结:涉及数据库、软件测试等内容
    数据结构---归并排序
    C语言运算符优先级 详细列表
  • 原文地址:https://www.cnblogs.com/lyt0207/p/11803597.html
Copyright © 2011-2022 走看看