JS實現簡易留言板——節點操作

今天的案例主要是對節點進行操作

創建節點、添加節點、刪除節點以及爲節點添加內容的操作。 

就是一個簡單的留言板功能,可以發佈留言,刪除留言。

主要思路:兩個鼠標點擊事件——點擊發布按鈕事件和點擊刪除按鈕事件

發佈按鈕事件:首先在文檔中創建li節點。然後第二步,先把文本域中的內容獲取出來賦給li,這裏要注意,文本域是表單元素,獲取表單元素的內容是使用表單的特有屬性value,要與普通元素獲取內容的innerHTML進行區分;再把刪除鏈接添加到li中,利用字符串拼接的方式。最後把li節點添加到ul中,添加的方式有兩種,是直接添加到ul列表項的末尾,也可以添加到指定位置。這裏我是選中插入到ul列表的最前面。

刪除按鈕事件:點擊刪除按鈕的事件是在把創建的li添加到ul中之後定義的。刪除的操作主要是要弄清除是父節點元素刪除子節點元素。在這裏點擊刪除鏈接,刪除的是當前被點擊的按鈕所在的li。li是刪除連接的父節點元素。

分析永遠比敲代碼重要。要先分析,再去敲代碼,實現需求。

先看效果圖吧

默認是沒有任何內容的

 在文本域中輸入,點擊發布,可以發佈留言,如果發完想刪除,可以點擊裏面的刪除按鈕,刪除留言

刪除操作後: 

 

 

 

JS代碼:

    <script>
        // 點擊發布,會把文本域中的內容發佈到ul中
        // 點擊刪除,會刪除留言
        // 1.獲取事件源 文本域 按鈕 文本域
        var text = document.querySelector('textarea');
        var btn = document.querySelector('button');
        var ul = document.querySelector('ul');
        // 2.註冊點擊事件
        btn.onclick = function () {
            // 首先會創建一個li  並把文本域的內容給li 再把li添加到ul中
            var li = document.createElement('li');
            if (text.value == '') {
                alert('您沒有輸入內容')
            } else {
                // 文本域的值 value
                // 增加一個刪除留言的按鈕
                li.innerHTML = text.value + '<a href="javascript:;">刪除</a>';
                ul.insertBefore(li, ul.children[0]); // 把最新的發佈放到最前面
                // ul.appendChild(li);

                // 3.註冊刪除點擊事件
                var removeBtn = document.querySelectorAll('a');
                for (var i = 0; i < removeBtn.length; i++) {
                    removeBtn[i].onclick = function () {
                        ul.removeChild(this.parentNode);
                    }
                }
            }
        }
    </script>

 

全部代碼:

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

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>留言板</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;
        }
    </style>
</head>

<body>
    <textarea name="" id=""></textarea>
    <button>發佈</button>
    <ul>

    </ul>
    <script>
        // 點擊發布,會把文本域中的內容發佈到ul中
        // 點擊刪除,會刪除留言
        // 1.獲取事件源 文本域 按鈕 文本域
        var text = document.querySelector('textarea');
        var btn = document.querySelector('button');
        var ul = document.querySelector('ul');
        // 2.註冊點擊事件
        btn.onclick = function () {
            // 首先會創建一個li  並把文本域的內容給li 再把li添加到ul中
            var li = document.createElement('li');
            if (text.value == '') {
                alert('您沒有輸入內容')
            } else {
                // 文本域的值 value
                // 增加一個刪除留言的按鈕
                li.innerHTML = text.value + '<a href="javascript:;">刪除</a>';
                ul.insertBefore(li, ul.children[0]); // 把最新的發佈放到最前面
                // ul.appendChild(li);

                // 3.註冊刪除點擊事件
                var removeBtn = document.querySelectorAll('a');
                for (var i = 0; i < removeBtn.length; i++) {
                    removeBtn[i].onclick = function () {
                        ul.removeChild(this.parentNode);
                    }
                }
            }
        }
    </script>
</body>

</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章