博主信息
博文 22
粉丝 3
评论 3
访问量 19748
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
js实现留言板-2019年7月13日13点40分
辰晨的博客
原创
1222人浏览过

留言板实现思路:

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

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>

运行实例 »

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


批改状态:合格

老师批语:你的留言板的样式是亮点
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学