JavaScript实现列表的增删和移动

本文详细介绍了如何使用JavaScript实现列表的增删和移动操作,包括添加新项、元素上下移动以及删除功能。通过实例代码演示了如何在表单中实现这些功能,并展示了如何利用克隆节点和DOM操作来管理列表内容。
摘要由CSDN通过智能技术生成

JavaScript实现列表的增删和移动

运行结果:

<!DOCTYPE html>
<html>
<head>

    <meta charset="UTF-8" />
    <title>列表的增删和移动</title>
    <style>
        .list-add {
            color: #f60;
            cursor: pointer;
        }

        .list-hide {
            display: none;
        }
    </style>
</head>

<body>
     <form>
        <div id="list">
            <ul id="list-ul" style="list-style: none">
                <li>
                    <input type="text" name="list[]" value="PHP" readonly />
                    <span class="list-btn">
                    <span class="list-up" onclick="MoveUp(this)">[上移]</span>
                    <span class="list-down" onclick="MoveDown(this)">[下移]</span>
                    <span class="list-del" onclick="delete1(this)">[删除]</span>
                    </span>
                    </li>
                    </ul>
                    </div>
                    <div>
                        <div class="list-add"><span>+添加项目</span></div>
                        <div class="list-hide">
                            添加到列表:
                            <input id="list-add-input" type="text" />
                            <input id="list-add-add" type="button" value="添加" />
                            <input id="list-add-cancel" type="button" value="取消" />
                            </div>
                             </div>
                            </form>
                            <script>
        let list_ul = document.getElementById("list-ul");
        // 添加节点的方法
        function add(input) {
            // 克隆一个li节点
            let li = list_ul.firstElementChild;
            let newli = li.cloneNode(true);
            newli.firstElementChild.value = input;
            list_ul.appendChild(newli);
        }
        // 添加项目事件
        let list_add = document.querySelector("div.list-add");
        list_add.onclick = () => {
            // 显示list-hide
            let list_hide = document.querySelector("div.list-hide");
            list_hide.style.display = "inline";
        };
        // 添加按钮事件
        let list_add_add = document.getElementById("list-add-add");
        list_add_add.onclick = () => {
            // 取出list-add-input的值
            let input = document.getElementById("list-add-input");
            if (input.value.trim() == "") {
                alert("请输入内容!");
                return;
            }
            add(input.value);
            input.value = "";
        };
        // 取消按钮事件
        let list_add_cancel = document.getElementById("list-add-cancel");
        list_add_cancel.onclick = () => {
            // 隐藏list-hide
            let list_hide = document.querySelector("div.list-hide");
            list_hide.style.display = "none";
        };
        // 上移事件
        function MoveUp(obj) {
            // 查找所属的祖先节点li
            let movenode = obj.parentNode.parentNode;
            let prev = movenode.previousElementSibling;
            // 判断是否为第一个
            if (prev != null) {
                // 上移
                list_ul.insertBefore(movenode, prev);
            }
        }
        // 下移事件
        function MoveDown(obj) {
            let movenode = obj.parentNode.parentNode;
            let downnode = movenode.nextElementSibling;
            if (downnode != null) {
                list_ul.insertBefore(downnode, movenode);
            }
        }
        // 删除事件
        function delete1(obj) {
            let delnode = obj.parentNode.parentNode;
            list_ul.removeChild(delnode)
        }

        // 初始化列表
        add("JavaScript"); // 添加节点的方法
    </script>

</body>

</html>

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逆游古河而上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值