实现目标:
- 输入留言, 点击发表显示新留言
- 进一步目标: 添加删除留言选项
关键词: 操作节点
实现如下:
<!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>留言板</title>
<style>
* {
margin: 0;
padding: 0;
}
li {
list-style: none;
}
.comment {
margin: 20px auto;
width: 400px;
min-height: 100px;
font-size: 14px;
border: 1px solid gray;
}
.comment h4 {
padding: 0 16px;
height: 38px;
line-height: 38px;
border-bottom: 1px solid rgb(196, 194, 194, .5);
}
li:nth-child(n+1) {
width: 100%;
margin-top: 8px;
font-size: 14px;
}
.inputBox {
margin-top: 15px;
width: 100%;
/* background-color: pink; */
}
.inputBox textarea {
min-height: 20px;
}
.inputBox button {
height: 20px;
margin-left: 3px;
}
</style>
</head>
<body>
<div class="comment">
<h4>最新评论</h4>
<!-- 没有多行多列,单列这里用列表标签而非表格标签比较简约 -->
<div class="content">
<ul>
<li><a href="#">麻叶绿了</a>
<p>真不戳,写代码的日子真不戳</p>
</li>
<li><a href="#">小轩窗</a>
<p>我看到了世界的参差</p>
</li>
</ul>
</div>
<div class="inputBox">
<textarea name="" id="" cols="30" rows="10"></textarea>
<button>发表</button>
</div>
</div>
<script>
// 1. 获取元素
var btn = document.querySelector('.inputBox').querySelector('button');
var text = document.querySelector('textarea');
var commentList = document.querySelector('ul');
// 2. 注册事件
//事件: 点击按钮获取输入文字
btn.onclick = function() {
if (text.value != '') {
//(a) 创建元素
var newComment = document.createElement('li'); //新建li类型元素
newComment.innerHTML = text.value;
//(b) 添加元素
commentList.append(newComment);
}
}
</script>
</body>
</html>
进一步目标: 添加删除留言选项
<script>
// 1. 获取元素
var btn = document.querySelector('.inputBox').querySelector('button');
var text = document.querySelector('textarea');
var commentList = document.querySelector('ul');
// 2. 注册事件
//事件a: 点击按钮获取输入文字
btn.onclick = function() {
if (text.value != '') {
//(a) 创建元素
var newComment = document.createElement('li'); //新建li类型元素
newComment.innerHTML = text.value;
// 新增删除留言选项
newComment.innerHTML += "<a href='javascript:;' class='delete'> 删除 </a>"; // 注意单双引号
//(b) 添加元素
commentList.append(newComment);
}
//事件b: 点击新增的删除链接可以删除当前留言节点
//注意: onclick只能写一个函数,想实现两个函数可以将两个功能模块合并或者在其中一个调用另一个
var deleteA = document.querySelectorAll('.delete');
for (var i = 0; i < deleteA.length; i++) {
deleteA[i].onclick = function() {
// commentList.removeChild(commentList.children[i + 2]);
commentList.removeChild(this.parentNode);
}
}
}
</script>