zoukankan      html  css  js  c++  java
  • 一阶段项目总结

    经过一周时间,做了一阶段项目,仿站:魅族手机官网。总体完成度还可以,但仍有许多不足。自己本身有前端基础打底,所以并没有太重视页面,老师说完成35个页面,那我就只做了3个,囧。本来我应该做的更出色的,但是没有太下功夫,唉。其实我决定仿这个站后,大体看了一遍,就知道我的重点只有一个,就是省市区三级联动的那个js效果。这个js我是完全自己写的,包括数据的获取,因为对数据的处理一直是我的技术短板。

    接下来主要说说通过写这个js,我的收获吧。 

    官网效果:

    我做的效果:

    技术点:

    1 json数据分析

    我是从网上下载了一个json数据,大体长这样:

    分析一下他的数据结构,有两个数组:provinceareas

    其每个数组元素都是一个json,

    province下的元素有:id,name,city,

    city的值又是一个数组,元素有:id,name

    areas包括:id,name,pid。这里的pid对应着cityid

    2 获取省:

    省的数据比较好办,直接用一个for循环,取出province[i].nameprovince[i].id就可以了。

    3 获取市

    市的获取就比较难了,我当时做的时候,也是卡到这了,不知道怎么取到市。问了老师,才知道需要建一个新的数组,来存储获取到的市的数据,然后再循环这个新数组,才能把数据找到。

    4 获取区

    区的数据获取和省的差不多,找到对应的id就可以了

    代码如下:

    //添加省
    	function add_data(){
    		var str='';
    		for(var i=0; i<province.length; i++){			
    			str+='<li p-id="'+province[i].id+'">'+province[i].name+'</li>'; //添加省的id和name
    		}		
    		$('#js_data_1').html(str);	//内容加到页面中	
    	}
    	
    	//点击省时,市改变
    	$("#js_data_1 li").each(function(){
    		$(this).click(function(){
    			var p_id=$(this).attr('p-id');	//获取点击的省的id		
    			var citys = [];	 //用来存储城市
    			for(var i=0; i<province.length; i++){
    				if(province[i].id==p_id){	//如果id相同,取出城市的数据
    					citys = province[i].city;					
    				}			
    			}
    
    			var str='';		
    			for(var i=0; i<citys.length; i++){
    				str+='<li p-id="'+citys[i].id+'">'+citys[i].name+'</li>'; //添加市的id和name						
    			}			
    			$('#js_data_2').html(str);		
    		});	
    	});
    
    	//点击市时,区改变
    	$(document).on('click','#js_data_2 li',function(){
    		var p_id=$(this).attr('p-id');	//获取点击的市的id	
    		var str='';		
    		for(var i=0; i<areas.length; i++){
    			if(areas[i].pid==p_id){		//如果id相同,取出区的数据
    				str+='<li>'+areas[i].name+'</li>';				
    			}												
    		}		
    		$('#js_data_3').html(str);		
    	});
    

    5 添加事件的方式

    因为市和区的数据是用jquery后添加的,所以直接用.click的方式,是不行的,要用on方法,这个也要特别注意。因为我直接用.click,就一直没有效果,调了好久,还以为自己哪里写的不对。后来突然想到是不是事件根本没有加上。改用了on后,就可以了。

    最后总结一下,学习了这一阶段,自己比之前在js上的提高有:

    1 会字符串拼接了

    2 能分清js对象和jquery对象,分清了才能用对方法

    3 会循环数据了

    4 会用数组了

    5 框架和插件的api,能看懂了,会查了

    我觉的这些就是很大的进步,因为我之前一直只会用js写一些效果,显示隐藏啥的。涉及到数据的,根本没办法,只能看着,心里一团乱。现在起码有眉目了,能做到一点点胸中有丘壑。但是总体来说,写的代码还是比较啰嗦,也没有很好的体现面向对象的思想。现在只能说完成基本效果,但是完成的出色与否,是不是更利于维护,延展性等,离这个目标还有很大很大的距离。我想等学习了面向对象,应该会更好。

    在项目展示时,又暴露了很多问题,一并总结一下,争取下次项目做的更好:

    1 展示时再说的详细一些,把能体现出特色,难点的地方,多说一点。多展示点代码。

    2 轮播,注意一行不要放置多个轮播,会导致自动播放时,看起来比较花,不好看。

    3 还是轮播,我用的swiper,有一个参数我没有注意到,就是loop循环,加上这个,会让轮播的体验更好,不会出现到最后一张了,然后很突兀的到第一张。这个我做的时候没有注意,是老师指出来的,非常感谢。

    4 通用的js代码可以适当封装一下。

  • 相关阅读:
    Building workspace has encountered a proble
    Eclipse异常关闭,IDE Exception Handler has encountered a problem An internal error has occurred
    jsp中写java代码的方法
    如何在jsp里面写java代码
    jsp中在java里面怎么调文本框里面的值?
    Typescript基本认识
    运行flutter run 报错Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
    H5+原生webview实现APP的JavascriptBridge的使用
    vue mounted里使用window.onresize报错问题
    关于elmentui 抽屉 el-drawer 的slot插入的内容无法通过ref访问的问题
  • 原文地址:https://www.cnblogs.com/hzhjxx/p/9822338.html
Copyright © 2011-2022 走看看