博客列表 >js实现留言板-2019年7月13日13点40分

js实现留言板-2019年7月13日13点40分

辰晨的博客
辰晨的博客原创
2019年07月14日 10:42:381027浏览

留言板实现思路:

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

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议