百度前端技术学院task13-task15的总结
2017-07-27 22:44
232 查看
前言:之前学了js,但是都是基础,而且前段时间忙期末,忙专利,也忘得差不多了。。。最近在看js高级程序设计,感觉收获挺多。本来想每看一个阶段就来这里写一下读书笔记的,但是又觉得有点浪费时间,还是就在书上写写画画算了。以后用到再进一步具体总结。这两天写了三个小任务,来总结一下吧。
task13
代码:https://github.com/sunyueru/IFE/tree/master/task13
demo:https://sunyueru.github.io/IFE/task13/task13.html
这个任务比较简单,而且题目也给好了框架。大体上就是一个自调用函数里面有一个事件处理函数,然后给按钮绑定点击事件就可以。
主要就是要注意判断条件,我一开始就没加 。。。还有一个小优化,我也是review别人的代码学到的,就是添加onkeyup事件。
下面说一下onkeyup这个之前没有接触过的知识点吧:
onkeyup事件本身不难,在js中的语法就是:object.onkeyup=function(){};
指的是键盘松开时发生。
结合这段代码来看一下:
这里的function传入的是一个event对象(之后细说这个对象的知识点),接着event有一个属性keyCode,它指的是被敲击的键的虚拟键盘码。这里13对应的就是enter。
所以这段代码的意思就是按回车键,执行handle()函数。
task14
代码:https://github.com/sunyueru/IFE/blob/master/task14/task14.html
demo:https://sunyueru.github.io/IFE/task14/task14.html
这个任务我想记录两个知识点:
数组排序以及二维数组的排序
如何动态的创建dom的内容。
最后就是要记得先排序再筛选,总体逻辑要清晰。
数组排序sort()
先来说明一下sort函数:
sort()函数本身是通过比较字符串来实现排序的,所以直接使用的时候必然不理想。sort函数可以接受一个比较函数作为参数,来指定排序方式。
例如:
简单写就是:
至于为什么传入compare就可以做到按序排列,涉及冒泡排序的思想以及高阶函数的知识。不细说了,我也说不太明白。。。。
那么,如果一个数组是二维的,第一项不是数字,要给第二项排序,怎么办呢?
比如这里aqiData是一个二维数组。那么对应的a,b也应该是一个二维数组对象,所以在排序的时候返回值应该是数组的第二项(第二项才是数字),a[1]和b[1]的差值。
最后啰嗦一下,sort返回值是被排序之后的数组。也就是说会改变原有数组。
动态创建dom内容
createElement是创建一个对象,一般要和appendChild一起使用。
执行完第一句代码之后,就会创建一对
还有一种就是不使用createElement,直接通过字符串的拼接,不断添加内容。
要注意几点:
不要忘记初始化myinnerHTML,即 var myinnerHTML=”“;
因为不止要创建一对li标签,所以不要忘记是字符串的拼接,也就是使用“+=”
最后结束了for循环了,就把object的innerHTML设置为拼接好的字符串就行了。
task15
代码:https://github.com/sunyueru/IFE/tree/master/task15
demo:https://sunyueru.github.io/IFE/task15/task15.html
这个任务的框架题目也搭建好了,最开始调用init()函数。init函数就是一个按钮点击触发事件。触发事件函数内部又有几个小函数,分别是读取数据,给数据排序,把数据动态添加到dom里。
写的时候,render函数和前一个任务差不多,排序也没问题了。主要就是getData函数写的时候,小bug不断的。。。。还是对dom的操作不够熟悉。
getData的主要任务就是要从一串字符中选取你需要的片段。
如何获取城市名
如何获取数字
城市名称的获取主要是要用到string对象的split方法。
先说一下这个方法的语法:
对应这里的代码解释:因为通过“空气质量:”切割之后返回的数组有两个元素,第一个元素是城市,这个不难。只要注意lis【i】是一个object,后面不要忘记加innerHTML。
可以试一下console.log第二个元素是什么?
结果是:
所以直接写
是不行的。这条路貌似走不通,其实我觉得有办法,但是我没有继续了。
所以如何获取数字?
思路就是直接通过getElementsByTagName(“b”)
但是这里有一个问题没有想通,就是这个返回的是一个数组?
所以需要在后面加【0】,不加有问题。
错误代码:
正确代码:
我再研究研究,之后再来追加修改吧。
最后需要注意的就是使用push来追加data数组元素。栈方法
每次添加一个data【i】,每个data【i】都是一个数组【city,num】
这个注意一下就行,data是一个二维数组撒。
task13
代码:https://github.com/sunyueru/IFE/tree/master/task13
demo:https://sunyueru.github.io/IFE/task13/task13.html
这个任务比较简单,而且题目也给好了框架。大体上就是一个自调用函数里面有一个事件处理函数,然后给按钮绑定点击事件就可以。
主要就是要注意判断条件,我一开始就没加 。。。还有一个小优化,我也是review别人的代码学到的,就是添加onkeyup事件。
下面说一下onkeyup这个之前没有接触过的知识点吧:
onkeyup事件本身不难,在js中的语法就是:object.onkeyup=function(){};
指的是键盘松开时发生。
结合这段代码来看一下:
input.onkeyup=function(event){ if(event.keyCode===13){ handle(); } }
这里的function传入的是一个event对象(之后细说这个对象的知识点),接着event有一个属性keyCode,它指的是被敲击的键的虚拟键盘码。这里13对应的就是enter。
所以这段代码的意思就是按回车键,执行handle()函数。
task14
代码:https://github.com/sunyueru/IFE/blob/master/task14/task14.html
demo:https://sunyueru.github.io/IFE/task14/task14.html
这个任务我想记录两个知识点:
数组排序以及二维数组的排序
如何动态的创建dom的内容。
最后就是要记得先排序再筛选,总体逻辑要清晰。
数组排序sort()
先来说明一下sort函数:
sort()函数本身是通过比较字符串来实现排序的,所以直接使用的时候必然不理想。sort函数可以接受一个比较函数作为参数,来指定排序方式。
例如:
function compare(value1,value2){ if(value1<value2) 4000 { return -1; }else if(value1>value2){ return 1; }else{ return 0; } }
简单写就是:
function compare(a,b) { return a - b }
var values=[1,,3,5,10,2]; values.sort(compare); alert(values);//1,2,3,5,10
至于为什么传入compare就可以做到按序排列,涉及冒泡排序的思想以及高阶函数的知识。不细说了,我也说不太明白。。。。
那么,如果一个数组是二维的,第一项不是数字,要给第二项排序,怎么办呢?
var aqiData=[ ["北京",90], ["上海",50], ["福州",10], ["广州",50], ["成都",90], ["西安",100] ];
aqiData.sort(function(a,b){ return b[1]-a[1]; })
比如这里aqiData是一个二维数组。那么对应的a,b也应该是一个二维数组对象,所以在排序的时候返回值应该是数组的第二项(第二项才是数字),a[1]和b[1]的差值。
最后啰嗦一下,sort返回值是被排序之后的数组。也就是说会改变原有数组。
动态创建dom内容
var myLi=document.createElement("li"); myLi.innerHTML="第"+num[i]+"名:"+aqiData[i][0]+','+aqiData[i][1]; aqiList.appendChild(myLi);
createElement是创建一个对象,一般要和appendChild一起使用。
执行完第一句代码之后,就会创建一对
<li></li>标签。可以自己console.log看看。然后就是定义li里面的内容,最后就是使用appendChild,把创建的标签加到其父元素上面。
function render(data) { var resort=document.getElementById("resort"); var list=["一","二","三","四","五","六","七"]; var myinnerHTML=""; for(var i=0;i<data.length;i++){ myinnerHTML += "<li>第"+list[i]+"名:"+data[i][0]+"空气质量:"+"<b>"+data[i][1]+"</b></li>"; } resort.innerHTML=myinnerHTML; }
还有一种就是不使用createElement,直接通过字符串的拼接,不断添加内容。
要注意几点:
不要忘记初始化myinnerHTML,即 var myinnerHTML=”“;
因为不止要创建一对li标签,所以不要忘记是字符串的拼接,也就是使用“+=”
最后结束了for循环了,就把object的innerHTML设置为拼接好的字符串就行了。
task15
代码:https://github.com/sunyueru/IFE/tree/master/task15
demo:https://sunyueru.github.io/IFE/task15/task15.html
这个任务的框架题目也搭建好了,最开始调用init()函数。init函数就是一个按钮点击触发事件。触发事件函数内部又有几个小函数,分别是读取数据,给数据排序,把数据动态添加到dom里。
写的时候,render函数和前一个任务差不多,排序也没问题了。主要就是getData函数写的时候,小bug不断的。。。。还是对dom的操作不够熟悉。
function getData() { var ul=document.getElementById("source"); var lis=ul.getElementsByTagName("li"); var data=new Array(); for(var i=0;i<lis.length;i++){ var city=lis[i].innerHTML.split("空气质量:")[0]; // var num=lis[i].getElementsByTagName("b")[0],不加[0]试试? var num=lis[i].getElementsByTagName("b")[0].innerHTML; data.push([city,num]); } //alert(data); return data; }
getData的主要任务就是要从一串字符中选取你需要的片段。
如何获取城市名
如何获取数字
城市名称的获取主要是要用到string对象的split方法。
先说一下这个方法的语法:
var city=lis[i].innerHTML.split("空气质量:")[0];
对应这里的代码解释:因为通过“空气质量:”切割之后返回的数组有两个元素,第一个元素是城市,这个不难。只要注意lis【i】是一个object,后面不要忘记加innerHTML。
可以试一下console.log第二个元素是什么?
console.log(lis[0].innerHTML.split("空气质量:")[1])
结果是:
<b>数字</b>.
所以直接写
var city=lis[i].innerHTML.split("空气质量:")[1];
是不行的。这条路貌似走不通,其实我觉得有办法,但是我没有继续了。
所以如何获取数字?
思路就是直接通过getElementsByTagName(“b”)
但是这里有一个问题没有想通,就是这个返回的是一个数组?
所以需要在后面加【0】,不加有问题。
错误代码:
var num=lis[i].getElementsByTagName("b").innerHTML;
正确代码:
var num=lis[i].getElementsByTagName("b")[0].innerHTML;
我再研究研究,之后再来追加修改吧。
最后需要注意的就是使用push来追加data数组元素。栈方法
每次添加一个data【i】,每个data【i】都是一个数组【city,num】
这个注意一下就行,data是一个二维数组撒。
相关文章推荐
- 百度前端技术学院task1 总结
- 百度前端技术学院-task2.18-2.19源码以及个人总结
- 百度前端技术学院-task1.8源代码以及个人总结
- |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20所有这些字符串,把它的数字一个个剥离??
- 总结系列_13(Qt使用总结,续...)
- 耀耀学院task1-task3练习总结
- 13暑假集训#2 总结
- mybatis系列-13-resultMap总结
- 13暑假集训 5 总结
- 【13】PMP一模20170723质量7种工具总结
- 总结15
- Linux下用Eclipse构建HBase开发环境 (总结13)
- Tomcat学习总结(15)—— Apache Tomcat各版本比较
- 7-13 最大公约数和最小公倍数(15 分)
- leedcode做题总结,题目Reorder List 13/11/12
- 基础总结篇之三:Activity的task相关
- 线性代数导论13——第一阶段总结
- Bootstrap学习总结笔记(13)-- 基本组件之缩略图
- Java基础-15总结对象数组,集合Collection,集合List
- 8.13学习总结