Louis919 2022-03-14 11:40 采纳率: 33.3%
浏览 33
已结题

我在添加a 节点后 他的href 值 没有设置javascript:;,然后再删除节点的时候,出现的是全部删除,加了之后,可以删除this.parentNode,这是咋回事

麻烦看看上面是哪里的问题 谢谢,代码在下面!


```html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }
        
        body {
            padding: 100px;
        }
        
        textarea {
            width: 200px;
            height: 100px;
            border: 1px solid pink;
            outline: none;
            resize: none;
        }
        
        ul {
            margin-top: 50px;
        }
        
        li {
            width: 300px;
            padding: 5px;
            background-color: rgb(245, 209, 243);
            color: red;
            font-size: 14px;
            margin: 15px 0;
        }
        
        li a {
            float: right;
            list-style-type: none;
        }
    </style>
</head>

<body>
    <textarea name="" id=""></textarea>
    <button>发布</button>
    <ul>

        <li>梵蒂冈dsaf f 噶</li>
    </ul>
    <script>
        //获取元素
        var text = document.querySelector('textarea');
        var btn = document.querySelector('button');
        var ul = document.querySelector('ul');
        //注册事件
        btn.onclick = function() {
            if (text.value == '') {
                text.value = '您输入的有误';
                return false;
            } else {
                var lis = document.createElement('li');
                lis.innerHTML = text.value + '<a href="javascript:;">删除</a>';
                /* ul.appendChild(lis); */
                ul.insertBefore(lis, ul.children[0]);
                var as = document.querySelectorAll('a');
                for (var i = 0; i < as.length; i++) {
                    as[i].onclick = function() {
                        ul.removeChild(this.parentNode);
                    }
                }
            }
        }
    </script>
</body>

</html>

```

  • 写回答

3条回答 默认 最新

  • CSDN专家-showbo 2022-03-14 12:04
    关注
    整个href删掉,而不是留空的内容href="",这样是链接,链接地址为空默认访问当前页面,点击后相当刷新页面,刷新了页面后js添加的内容会丢失,所以就出现题主说的全部删除这种效果了
    lis.innerHTML = text.value + '<a >删除</a>';//连href一起删掉,而不是lis.innerHTML = text.value + '<a href="">删除</a>';这样
    
    

    当然保留href=""也行,要return false阻止链接跳转

    
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <style>
            * {
                margin: 0;
                padding: 0;
            }
    
            body {
                padding: 100px;
            }
    
            textarea {
                width: 200px;
                height: 100px;
                border: 1px solid pink;
                outline: none;
                resize: none;
            }
    
            ul {
                margin-top: 50px;
            }
    
            li {
                width: 300px;
                padding: 5px;
                background-color: rgb(245, 209, 243);
                color: red;
                font-size: 14px;
                margin: 15px 0;
            }
    
                li a {
                    float: right;
                    list-style-type: none;
                }
        </style>
    </head>
    
    <body>
        <textarea name="" id=""></textarea>
        <button>发布</button>
        <ul>
    
            <li>梵蒂冈dsaf f 噶</li>
        </ul>
        <script>
            //获取元素
            var text = document.querySelector('textarea');
            var btn = document.querySelector('button');
            var ul = document.querySelector('ul');
            //注册事件
            btn.onclick = function() {
                if (text.value == '') {
                    text.value = '您输入的有误';
                    return false;
                } else {
                    var lis = document.createElement('li');
                    lis.innerHTML = text.value + '<a href="">删除</a>';
                    /* ul.appendChild(lis); */
                    ul.insertBefore(lis, ul.children[0]);
                    var as = document.querySelectorAll('a');
                    for (var i = 0; i < as.length; i++) {
                        as[i].onclick = function() {
                            ul.removeChild(this.parentNode);
                            return false;///////////阻止链接跳转
                        }
                    }
                }
            }
        </script>
    </body>
    
    </html>
    
    

    img


    有其他问题可以继续交流~

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月22日
  • 已采纳回答 3月14日
  • 创建了问题 3月14日

悬赏问题

  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢
  • ¥15 不小心不正规的开发公司导致不给我们y码,
  • ¥15 我的代码无法在vc++中运行呀,错误很多
  • ¥50 求一个win系统下运行的可自动抓取arm64架构deb安装包和其依赖包的软件。
  • ¥60 fail to initialize keyboard hotkeys through kernel.0000000000
  • ¥30 ppOCRLabel导出识别结果失败