总结:
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>
运行实例 »
点击 "运行实例" 按钮查看在线实例