博客列表 >【0117】JavaScript中的dom操作 ToDoList练习

【0117】JavaScript中的dom操作 ToDoList练习

小包子的博客
小包子的博客原创
2019年01月29日 12:25:50770浏览

总结:

1、在js操作dom中首先要理解文档树和节点的概念,对dom的操作就是对节点的操作(增加、删除、修改),如何正确的选择到要操作的节点就很重要。

2、this作为实参代表的是当前元素,所以还要通过this查找父节点。

3、“键盘敲烂,月薪过万”还是要多练习,看视频和自己写真是一个天一个地。

问题:

parentNode和parentElement的区别?

childNodes和children的区别?

思考:

1、本次练习中模仿qq对话框设置了一个“用enter发送”和“用ctrl+enter”快捷键发送,那么可否设置一个自定义配置快捷键来发送呢(试了几次,除了在程序里面写死快捷键,不知道还有什么方法可以自定义)

2、这个练习如果用面相对象该如何写?


实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>ToDoList</title>
    <style>
*{padding: 0; margin: 0;}
ul,ol,li {list-style: none;}
.clearfix{zoom: 1;}
.clearfix:after{content:' '; display: block; clear: both; line-height: 1px; height: 0;}
.wrap {width: 500px; margin: 0 auto; }
.wrap h1{background-color: #ffffff;}
.list-ul {padding: 20px; border: 1px solid #ddd; clear: both; background: rgb(245,245,245); margin-bottom: 20px;height: 200px; overflow-y: scroll;}
.list-ul li {width: 100%; text-align: right;margin-bottom: 20px; position: relative;}
.list-ul li p{width: 50%; background: rgba(152,225,106,1); box-sizing: border-box; padding: 10px;color: #333; position: relative; display: inline-block; text-align: left; z-index: 100; border-radius: 4px;}
.list-ul li p::after{content: ' '; display: block; background: rgba(152,225,106,1); position: absolute; width: 20px; height: 20px; right: -5px; top: 10px; -webkit-transform: rotate(45deg); -moz-transform: rotate(45deg); transform: rotate(45deg); z-index: -1;
}
.list-ul li a{ font-size: 12px; text-decoration: none; color: #333333; position: absolute; bottom:-20px; right: 0; width: 40px;}
.list-ul li a:hover{color: #ff0000;}

.input_box {height: 18px; line-height: 18px; padding: 5px; width:360px;}
.select_box {height: 32px; line-height: 32px; padding: 5px; vertical-align: top;}
        </style>
</head>
<body>
    <div class="wrap"> 
        <h1>toDoList</h1>
        <ul class="list-ul clearfix">
            <li>
                <p>来说点什么吧</p>
                <a href="javascript:;" onclick="del(this);">删除</a>
            </li>
        </ul>
        <input type="text" name="input_box" class="input_box" id="input_box" value="">
        <select class="select_box">
            <option value="1" selected>Enter发送</option>
            <option value="2">Ctrl+Enter发送</option>
        </select>
    </div>
<script>
    
    var input = document.getElementById('input_box');
    var ul = document.querySelector('.list-ul');
    var select = document.querySelector('select');
    input.focus();

    input.onkeydown = function(event){
        if(select.value == 1)
        {
            if( !event.ctrlKey && event.keyCode === 13 )
            {
                send ();
            }
        }
        else if (select.value == 2)
        {
            if(event.ctrlKey && event.keyCode === 13)
            {
                send ();
            }
        }

        function send (){
            let li = document.createElement('li');
            let p = document.createElement('p');
            p.innerHTML = input.value;
            li.appendChild(p);
            li.innerHTML += '<a href="javascript:;" onclick="del(this)">删除</a>';

            if (ul.childElementCount === 0){
                ul.appendChild(li);
            } else {
                let first = ul.firstElementChild;
                ul.insertBefore(li,first);
            }

            input.value = ''; // 清空输入框
        }
    }

    function del (ele)
    {
        if (confirm('确定删除吗?'))
        {
            let li = ele.parentElement;
            li.parentElement.removeChild(li);
        }

    }
    
</script>
</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议