javascript - 关于JS插入一个DOM节点后,再通过点击删除操作删除之前插入的DOM节点问题?求大神帮忙

查看:82
本文介绍了javascript - 关于JS插入一个DOM节点后,再通过点击删除操作删除之前插入的DOM节点问题?求大神帮忙的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我想要的效果是:
1、在文本框里输入内容,然后点击添加按钮,在指定的UI下面添加LI;
2、通过点击LI里的删除文字;可以删除当前添加的这个LI节点;
遇到的问题:第一个效果已经实现了,但是第二个效果我试了好久都没得行。不知道哪里写错了,求大神帮我看一下;最好能说明一下我的问题出在哪里,用哪种方法可以解决。谢谢哈;
下面是我的代码:

<!doctype html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <style>
            .oli{
                width: 300px;
                height: 35px;
                color: #FFFFFF;
                background-color: #004488;
                margin-bottom: 1px;
                padding-left: 20px;
                line-height: 35px;
            }
            
            a:link{
                color: #FFFFFF;
            }
            a:hover{
                color: #ff0099;
            }
        </style>
        <script>
            window.onload = function(){
                 var oul_b1 = document.getElementById('oul_1');
                 var oBat_a2 = document.getElementById('bat_a2');
                 oBat_a2.onclick = function(){
                     var oli_b1 = document.createElement('li');
                     var text_b2 = document.getElementById('text_a2');
                     oli_b1.innerHTML = text_b2.value + "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>删除</a>";
                     oul_b1.appendChild(oli_b1);
                     //下面的代码是给添加的li加一个class样式
                     var calss_li = oul_b1.getElementsByTagName('li');
                     for(var i=0;i<calss_li.length;i++){
                         //alert(calss_li[1].innerHTML);
                         calss_li[i].className = 'oli';
                     };
                     //
                     
                 //下面是删除添加的li
                 var del_li = document.getElementsByTagName('a');
                 alert('dsaf');
                 for(var j=0;j<del_li.length;j++){
                     //alert(del_li.innerHTML);
                     del_li[i].onclick = function(){
                         alert('ada');//测试
                         oul_b1.removeChild(this.parentNode); //删除oul_b1的子节点
                     }
                 };
                 
                 };
                 //
                 
                 
             }
        </script>
    </head>

    <body>
        <input type="text" value="" id="text_a2" />
        <input type="button" value="添加LI" id="bat_a2" />
        <ul id="oul_1">

        </ul>
    </body>

</html>

解决方案

这个要用事件代理

window.onload = function() {
    document.getElementById('bat_a2').onclick = function(){
      var val = document.getElementById('text_a2').value;
      var text = '<li class="oli">' + val + "&nbsp;&nbsp;&nbsp;<a href='javascript:;'>删除</a></li>";
      document.getElementById("oul_1").insertAdjacentHTML('beforeEnd', text);
    }
    document.getElementById("oul_1").addEventListener("click", function(e) {
        if (e.target && e.target.nodeName == "A") {
            document.getElementById("oul_1").removeChild(e.target.parentNode);
        }
    });
}

这篇关于javascript - 关于JS插入一个DOM节点后,再通过点击删除操作删除之前插入的DOM节点问题?求大神帮忙的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆