bootstrap组件

8 篇文章 0 订阅
6 篇文章 0 订阅

bootstrap

案例:toDoList 文本框里面输入内容,按下回车,就可以生成待办事项 点击待办事项复选框,就可以把当前数据添加到已完成的事项里面
点击已完成事项复选框,就可以把当前数据添加到待办事项里面 但是本页面内容刷新页面数据不会丢失

toDoList不如内地存储数据渲染加载到页面
因为后面会经常渲染加载操作,所以声明一个人函数 local 方便以后使用
先要读取本地存储数据,(数据不要方剂转化为对象格式)
之后遍历这个数据($.each())有几条数据,就生成几个小li,添加到ol里面
每次渲染之前,先把原先里面ol的内容清空,然后加载最新的数据

案例:toDoList删除操作
点击里面的小li,不是删除li,是删除本地存储对应的数据
核心原理:先获取本地存储的数据,删除对应的数据,保存本地存储,重新渲染列表li
我们可以给链接自定义属性记录当前的索引号
根据这个索引号,删除相关数据–数组的splice(i,1)方法
存储修改后的数据,然后存储给本地存储
重新渲染加载数据列表
因为a是动态创建的,我们使用on方法绑定事件

案例:toDoList正在进行和已经完成选项操作
点击之后,获取本地存储数据
修改对应数据的done为当前复选框的checkbox的状态
之后保存数据到本地存储
重新渲染加载数据列表
load加载函数里面,新增一个条件,如果当前数据的done值是true,就把列表渲染加载到ul里面

案例“toDoList统计正在进行个数和已经完成个数
在我们的load函数里面操作
声明2个变量:todoCount待个数 doneCount已经完成个数
当遍历存储数据的时候,如果数据done为false 则todoCount++,否则doneCount++

<script src="js/jquery.min.js"></script>
<script>
//刷新不会丢失数据,因此需要用到本地存储localStorage
//不管按下回车,还是点击复选框,都是把本地存储的数据加载到页面中,这样保证刷新关闭页面不会丢失数据
//存储数据格式:var todolist = [{title:"xxx",done:false}]
//注意点:本地存储localStorage里面只能存储字符串,因此需要把对象转换成字符串JSON.stringify(data)
	$(function(){
		load();
		var todoList = [{
		title:'今天学完jq',
		done:false
	},{
		title:'该吃午饭了',
		done:false	
	}];
	//localStorage.setItem("todo",todolist);
	//1.本地存储里面只能存储字符串的数据格式  我们把数组对象转换为字符串格式  JSON.stringify()
	localStorage.setItem("todo",JSON.stringify(todolist));
	var data = localStorage.getItem("todo");
	//console.log(typeof data);
	console.log(data[0].title);
	//2.获取本地存储的数据我们需要把里面的字符串数据传华为 对象格式  JSON.parse()
	data = JSON.parse(data);
	console.log(data); 
	//①利用事件对象.keyCode()判断用户按下回车(13)
	//②声明一个数组,保存数据
	//③先读取本地存储原来的数据(声明函数getData)放到这个数组里面
	//④之后吧最新数据从表单获取过来,追加到数组里面
	//⑤最后把数组存储给本地存储(声明savaDate())
	$("#title").on("keydown",function(event){
	
		if(event.keyCode === 13){
			if($(this).val() === ""){
				alert("请输入事件");
			}else{
				//读取本地存储的数据
			var local = getDate();	
			//把local数组进行更新数据 把最新的数组追加给local数组
			local.push({title:$(this).val(),done:false});
			//把这个数组local 存储到给本地存储
			//调用保存的函数  local局部变量
			saveDate(local);
			//2.todoList  本地存储数据渲染加载到页面
			load();
			$(this).val("");	
			}
		}
	});
	//3.toDoList  删除事件
	$("ol,ul").on("click","a",function(){
		//先获取本地存储
		var data = getDate();
		//修改数据
		var index = $(this).attr("id");
		//splice()从哪个位置开始删除  删除几个元素
		data.splice(index,1)
		//保存到本地存储
		saveDate(data);
		//data = saveDate();
		//重新渲染页面
		local();
	});
	//4.toDoList  正在进行和已完成选项操作
	//事件委托
	$("ol, ul").on("click","input",function(){	
	//先获取本地存储的数据
	var data= getDate();
	//修改数据   自定义属性attr()获取	 固有属性用prop()获取
	var index= $(this).siblings("a").attr("id");
	data[index].done = $(this).prop("checked")
	//保存到本地存储 
	saveDate(data);
	//重新渲染页面
	load();
	
	})
	//读取本地存储的数据
	function getDate(){
		var data = localStorage.getItem("todolist");
		if(data !== null){
			//本地存储里面的数据是字符串格式的  但是我们需要的是对象格式的
			return JSON.parse(data);
		}else{
			return[];	
		}
	}
	//保存本地存储数据
	function saveDate(data){
		localStrage.setItem("todolist",JSON.stringfy(data))	
	}
	//渲染加载数据
	function load(){
		var data = getDate();	
		//遍历之前,先要请空ol里面的元素内容
		$("ol ,ul").empty();
		var todoCount= 0; // 正在进行
		var doneCount = 0;  //已经完成
		//遍历这个数据
		$.each(data,function(i,n){
		if(n.done){
			$("ul").prepend("<li><input type= 'checkbox' checked='checked'> <p>"+n.title+"</p><a href='javascript:;' id = "+ i +"></a></li>");	
			doneCount++;
		}else{
			
			$("ol").prepend("<li><input type= 'checkbox'> <p>"+n.title+"</p><a href='javascript:;' id = "+ i +"></a></li>");
			todoCount++;	
		}
		
		});
		$("#todocount").text(todoCount);
		$("#donecount").text(doneCount);
	}
	})
</script>
<section>
	<label for= "title" >ToDoList</label>
	<input type="text" id= "title" name="title" placeholder="添加ToDo">
</section>
<section>
	<h2>正在进行<span id="todocount"></span><h2>
	<ol id="todolist" class="demo-box">
		<li>
			<input type="checkbox"name="" id="">
			<p></p>
			<a href="#"></a>
		</li>
	</ol>
	<h2>已经完成<span id="donecount"></span></h2>
	<ul id="donelist"></ul>
</section>

<script>
	$("input").click(function(){
		var checkbox =  true 
		//判断input 的checkbox的值,如果为false,渲染到ol
		getDate().val()
	})
</script>

本地存储的数据是字符串格式 但是我们需要对象格式
JSON.parse()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值