JS练习之JS/CSS实现待办事项列表

本文介绍如何使用HTML、CSS和JavaScript实现一个简单的待办事项列表应用,包括添加、删除事项及标记完成状态的功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JS练习之JS/CSS实现待办事项列表

实现效果如下图:
事项列表效果图

HTML代码段

<div id="myDIV" class="header">
	<h2 style="margin:5px">我的待办事项</h2>
	<input type="text" id="myInput" placeholder="Title..">
	<span onclick="newElement()" class="addBtn">Add</span>
</div>

<ul id="myUL">
	<li>Hit the gym</li>
	<li class="checked">Pay bills</li>
	<li>Meet George</li>
	<li>Buy eggs</li>
	<li>repair computer</li>
	<li>Read a book</li>
</ul>

CSS代码段

<style>
body {
	 margin:0;
	 min-width:250px;
}

* {
	box-sizing:border-box;//border-box定义的盒子,不会随着padding和border的加入而增大盒子的占用空间
}

/*在列表页中移除外边距和内边距*/
ul {
	margin:0;
	padding:0;
}

/*事项的样式*/
ul li {
	cursor:pointer;		//鼠标移到事项上时鼠标显示为手指的形状
	position:relative;	
	padding:12px 8px 12px 40px;
	background: #eee;
	font-size:18px;
	transition:0.2s;
	
	/*使列表事项文字不可被选中*/
	-webkit-user-select:none;
	-moz-user-select:none;
	-ms-user-select:none;
	user-select:none;
}

/*给事项添加斑马线样式(odd即偶数) */
ul li:nth-child(odd) {
	background:#f9f9f9;
}

/*鼠标移到事项上时显示较深的颜色 */
ul li:hover {
	background:#ddd;
}

/*当点击时,添加另外一种背景颜色*/
ul li.checked {
	background:#888;
	color:#fff;
	text-decoration:line-through;	//文字中间横一条线
}

/*给已完成的事项添加标记勾 */
ul li.checked::before {
	content: '';
	position:absolute;
	border-color:#fff;
	/*下面两行代码显示一个勾*/
	border-style:solid;			/*实线模式*/
	border-width:0 2px 2px 0;	/* 右、下 宽度2px,上、左宽度0。*/
	top:13px;	/*定位*/
	left:16px;
	transform:rotate(45deg);	/*顺时针旋转45度*/
	/*勾的长和宽设定*/
	height:14px;	
	width:7px;
}

/* 在事项后面添加×号关闭按钮样式 */
.close {
	position:absolute;
	right:0;
	top:0;
	padding:12px 16px 12px 16px;
}


/*头部样式*/
.header {
	background-color:#f44336;
	padding:30px 40px;

	text-align:center;
	
}

/*在头部之后清除浮动 */
.header:after {
	content:"";
	display:table;
	clear:both;
}


/*输入框样式*/
input {
	border:none;
	width:75%;
	padding:10px;
	float:left;
	font-size:16px;

}

/*添加“Add”按钮样式*/
.addBtn {
	padding:8.5px;

	width:25%;
	background:#d9d9d9;
	color:#555;
	float:left;
	text-align:center;
	cursor:pointer;
	transition:0.3s;
}
.addBtn:hover {
	background-color:#bbb;
}
</style>

JS段代码

<script>
//在事项条后面添加×号 
var myNodelist = document.getElementsByTagName("li");	//获取所有的li元素
var i;
for(i=0;i<myNodelist.length; i++){
	var span = document.createElement("SPAN");
	var txt = document.createTextNode("\u00D7");	// \u00D7是“×”
	span.className = "close";	//给span添加 class="close"
	span.appendChild(txt);
	myNodelist[i].appendChild(span);
}

//点击×号按钮隐藏该事项
var close=document.getElementsByClassName("close");
var i;
for(i=0;i<close.length;i++){
	close[i].onclick = function(){
		var div = this.parentElement;
		div.style.display = "none";
	}
}

//当点击列表时,在列表前面出现完成标志,再次点击则取消
var list=document.querySelector('ul');
list.addEventListener('click',function(ev){
	if(ev.target.tagName == 'LI'){
		ev.target.classList.toggle('checked');
	}
},false);

//当点击Add按钮时,添加新事项
function newElement(){
	var li = document.createElement("li");
	var inputValue = document.getElementById("myInput").value;
	var t = document.createTextNode(inputValue);
	li.appendChild(t);
	if(inputValue===''){
		alert("您得输入点什么。");
	} else {
		document.getElementById("myUL").appendChild(li);
	}
	document.getElementById("myInput").value = "";	//输入完成并添加成功后清空输入框
	
	var span = document.createElement("SPAN");
	var txt = document.createTextNode("\u00D7");
	span.className = "close";
	span.appendChild(txt);
	li.appendChild(span);
	
	for(i = 0;i < close.length; i++){
		close[i].onclick = function(){
			var div = this.parentElement;
			div.style.display = "none";
		}
	}
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值