Blogger Information
Blog 22
fans 3
comment 3
visits 16404
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
js实现留言板-2019年7月13日13点40分
辰晨的博客
Original
1032 people have browsed it

留言板实现思路:

第一步、写好基本构架,此时不具备任何功能

1.JPG

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>留言框</title>
	<style>
		body{
			background-color: #00a5e0;
		}
		.text{
			width:1200px;
			padding:20px 0;
			margin:0 auto;
			text-align: center;
			color: #fff;
		}
		.text hr{
			margin-bottom: 20px;
			border:1px solid #fff;
		}
		input{
			width:1188px;
			height: 44px;
			padding-left: 10px;
			border:1px solid #ccc;
			border-radius: 6px;
		}

		.box{
			width:1160px;
			min-height:100px;
			margin:0 auto;
			background-color: #fff;
			border-radius: 6px;
			padding:20px;
		}
		.box ul{
			margin:0;
			padding:0;
		}
		.box ul li{
			list-style: none;
			padding:10px 0;
			border-bottom: 1px dashed #ccc;
			margin-bottom: 20px;
			word-wrap:break-word;
			overflow: hidden;
		}
		.box ul li img{
			width:30px;
			height:30px;
			border-radius: 50%;
			border:1px solid #00a5e0;
			float: left;
		}
		.left{
			float:left;
		}
		.right{
			width: 1100px;
			float: right;
		}
		
		.box span{
			float: right;
			padding: 6px 0;
		}

		.box span:hover{
			color: #f50;
		}
		.box time{
			float:left;
			padding: 6px 0;
			margin-left: 10px;
		}
	</style>
</head>
<body>
	<div class="text">
		<h2>留言框</h2>
		<hr>
		<input type="text" id="comment" autofocus placeholder="点击‘Enter’,留下你的足迹吧~~">
	</div>
	<div class="box">
		<ul id="list">

		</ul>
	</div>
</body>
</html>

运行实例 »

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

第二步、添加留言功能

1. 获取input文本框与ul

    var comment = document.getElementById('comment');

    var list = document.getElementById('list');

2.事件监听

    comment.addEventListener('keypress', addComment, false);

    keypress相当于keydown+keyup;addComment添加的函数名称;false默认冒泡阶段触发,反之则捕获阶段触发。

3.触发事件执行的函数

    [1]判断值是否为空且触发事件的按键是否是“Enter”     

        event.key === 'Enter'&& comment.value != "";

    [2]符合条件,生成li标签     

        var item = document.createElement('li');

    [3]获取时间    

    var myday=new Date()
    var month=new Array(12)
    month[0]="1月"
    month[1]="2月"
    month[2]="3月"
    month[3]="4月"
    month[4]="5月"
    month[5]="6月"
    month[6]="7月"
    month[7]="8月"
    month[8]="9月"
    month[9]="10月"
    month[10]="11月"
    month[11]="12月"
    var day=new Array(7)
    day[0]="日"
    day[1]="一"
    day[2]="二"
    day[3]="三"
    day[4]="四"
    day[5]="五"
    day[6]="六"
    var today=myday.getFullYear()+"年"+month[myday.getMonth()]+myday.getDate()+'日'+" "+" "+myday.getHours()+"时"+myday.getMinutes()+"分"+myday.getSeconds()+"秒"+" "+" "+" "+" "+"星期"+day[myday.getDay()];

    [4]生成li标签中的内容

      item.innerHTML ='<img src="图片地址" alt="头像">'+ '<time>'+ today +'</time>'+ '<span>删除</span>'+'<br>'+'<br>' +comment.value ;   

    [5]判断ul的子标签li是否为空,为空则直接插入li标签,否则,将li标签插入子标签的第一位   

    if (list.childElementCount === 0) {
                    list.appendChild(item);
                } else {
                    list.insertBefore(item, list.firstElementChild);
                }

    [6]清空input文本框中的内容

    comment.value = null;

第三步、实现删除功能

    1.通过confirm()函数返回值判断是否删除。返回值微ture,删除li标签中的全部内容,为false不执行删除操作

    2.确认用户点击的是否是指定的按钮元素

    3.event.currentTarget事件绑定元素,event.target触发事件的元素

    代码如下:

list.addEventListener('click',del,false);
      function del(event) {
      		if(event.target.nodeName === 'SPAN'){
      		var ul = event.currentTarget;
      		var but = event.target;
      		if(confirm('是否删除?')){
      		var li = but.parentElement;
      		ul.removeChild(li);
      		} 
      	}  	
      }

运行实例 »

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


最终展现效果与完整代码

运行结果:

1.打开效果:

1.JPG

2.添加留言:

2.JPG

3.删除留言:

3.JPG4.JPG

完整代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>留言框</title>
	<style>
		body{
			background-color: #00a5e0;
		}
		.text{
			width:1200px;
			padding:20px 0;
			margin:0 auto;
			text-align: center;
			color: #fff;
		}
		.text hr{
			margin-bottom: 20px;
			border:1px solid #fff;
		}
		input{
			width:1188px;
			height: 44px;
			padding-left: 10px;
			border:1px solid #ccc;
			border-radius: 6px;
		}

		.box{
			width:1160px;
			min-height:100px;
			margin:0 auto;
			background-color: #fff;
			border-radius: 6px;
			padding:20px;
		}
		.box ul{
			margin:0;
			padding:0;
		}
		.box ul li{
			list-style: none;
			padding:10px 0;
			border-bottom: 1px dashed #ccc;
			margin-bottom: 20px;
			word-wrap:break-word;
			overflow: hidden;
		}
		.box ul li img{
			width:30px;
			height:30px;
			border-radius: 50%;
			border:1px solid #00a5e0;
			float: left;
		}
		.left{
			float:left;
		}
		.right{
			width: 1100px;
			float: right;
		}
		
		.box span{
			float: right;
			padding: 6px 0;
		}

		.box span:hover{
			color: #f50;
		}
		.box time{
			float:left;
			padding: 6px 0;
			margin-left: 10px;
		}
	</style>
</head>
<body>
	<div class="text">
		<h2>留言框</h2>
		<hr>
		<input type="text" id="comment" autofocus placeholder="点击‘Enter’,留下你的足迹吧~~">
	</div>
	<div class="box">
		<ul id="list">

		</ul>
	</div>

<script>

		// 获取input文本框与ul
        var comment = document.getElementById('comment');
        var list = document.getElementById('list');
        // 事件监听
        comment.addEventListener('keypress', addComment, false);
        // 触发的事件
        function addComment(event) {
        // 判断值是否为空且触发事件的按键是否是“Enter”
            if (event.key === 'Enter'&& comment.value != "") {
            	// 符合条件,生成li标签
                var item = document.createElement('li');

                // 获取时间
				var myday=new Date()
				var month=new Array(12)
		    	month[0]="1月"
		    	month[1]="2月"
		   	 	month[2]="3月"
		    	month[3]="4月"
		    	month[4]="5月"
		   	 	month[5]="6月"
		    	month[6]="7月"
		    	month[7]="8月"
		    	month[8]="9月"
		    	month[9]="10月"
		    	month[10]="11月"
		    	month[11]="12月"
				var day=new Array(7)
				day[0]="日"
				day[1]="一"
				day[2]="二"
				day[3]="三"
				day[4]="四"
				day[5]="五"
				day[6]="六"
				var today=myday.getFullYear()+"年"+month[myday.getMonth()]+myday.getDate()+'日'+" "+" "+myday.getHours()+"时"+myday.getMinutes()+"分"+myday.getSeconds()+"秒"+" "+" "+" "+" "+"星期"+day[myday.getDay()];

				// li标签中的内容
                item.innerHTML ='<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1562925696040&di=00daa81ca4bbe620ce508ea5892a8308&imgtype=0&src=http%3A%2F%2Fm.360buyimg.com%2Fpop%2Fjfs%2Ft23434%2F230%2F1763906670%2F10667%2F55866a07%2F5b697898N78cd1466.jpg" alt="头像">'+ '<time>'+ today +'</time>'+ '<span>删除</span>'+'<br>'+'<br>' +comment.value ;
                // 判断ul的子标签li是否为空,为空则直接插入li标签
                if (list.childElementCount === 0) {
                    list.appendChild(item);
                } else {
                	// 否则,将li标签插入子标签的第一位
                    list.insertBefore(item, list.firstElementChild);
                }
                // 清空input文本框中的内容
                comment.value = null;
            }
        }
     
     list.addEventListener('click',del,false);
      function del(event) {
      		if(event.target.nodeName === 'SPAN'){
      			// 绑定父元素
      		var ul = event.currentTarget;
      		// 触发事件元素按钮
      		var but = event.target;
      		// 确保触发的元素为指定元素
      		if(confirm('是否删除?')){
      		// 被删除的内容
      		var li = but.parentElement;
      		ul.removeChild(li);
      		} 
      	}  	
      }
    </script> 
</body>
</html>

运行实例 »

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


Correction status:qualified

Teacher's comments:你的留言板的样式是亮点
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments