任务目的

  • 在上一任务基础上继续JavaScript的体验
  • 接触一下JavaScript中的高级选择器
  • 学习JavaScript中的数组对象遍历、读写、排序等操作
  • 学习简单的字符串处理操作

任务描述

  • 参考以下示例代码,读取页面上已有的source列表,从中提取出城市以及对应的空气质量
  • 将数据按照某种顺序排序后,在resort列表中按照顺序显示出来
<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>IFE JavaScript Task 01</title>
</head>
<body> <ul id="source">
<li>北京空气质量:<b>90</b></li>
<li>上海空气质量:<b>70</b></li>
<li>天津空气质量:<b>80</b></li>
<li>广州空气质量:<b>50</b></li>
<li>深圳空气质量:<b>40</b></li>
<li>福州空气质量:<b>32</b></li>
<li>成都空气质量:<b>90</b></li>
</ul> <ul id="resort">
<!--
<li>第一名:北京空气质量:<b>90</b></li>
<li>第二名:北京空气质量:<b>90</b></li>
<li>第三名:北京空气质量:<b>90</b></li>
--> </ul> <button id="sort-btn">排序</button> <script type="text/javascript"> /**
* getData方法
* 读取id为source的列表,获取其中城市名字及城市对应的空气质量
* 返回一个数组,格式见函数中示例
*/
function getData() {
/*
coding here
*/ /*
data = [
["北京", 90],
["北京", 90]
……
]
*/ return data; } /**
* sortAqiData
* 按空气质量对data进行从小到大的排序
* 返回一个排序后的数组
*/
function sortAqiData(data) { } /**
* render
* 将排好序的城市及空气质量指数,输出显示到id位resort的列表中
* 格式见ul中的注释的部分
*/
function render(data) { } function btnHandle() {
var aqiData = getData();
aqiData = sortAqiData(aqiData);
render(aqiData);
} function init() { // 在这下面给sort-btn绑定一个点击事件,点击时触发btnHandle函数 } init(); </script>
</body>
</html>

任务注意事项

  • 实现简单功能的同时,请仔细学习JavaScript基本语法、事件、DOM相关的知识
  • 请注意代码风格的整齐、优雅
  • 代码中含有必要的注释
  • 建议不使用任何第三方库、框架
  • 示例代码仅为示例,可以直接使用,也可以完全自己重写

任务完成与总结:

实现思路:将字符串按照一定的要求进行拆分组合成一个数组,对数组内容进行比较排序,创建一个调用函数。

案例:

<!DOCTYPE>
<html>
<head>
<meta charset="utf-8">
<title>task15</title>
<style type="text/css">
* {
font: "微软雅黑";
}
</style>
</head>
<body>
<ul id="source">
<li>北京空气质量:<b></b></li>
<li>上海空气质量:<b></b></li>
<li>天津空气质量:<b></b></li>
<li>广州空气质量:<b></b></li>
<li>深圳空气质量:<b></b></li>
<li>福州空气质量:<b></b></li>
<li>成都空气质量:<b></b></li>
</ul>
<ul id="resort"> </ul>
<button id="sort-btn">排序</button> <script type="text/javascript">
function getData() {
var ul = document.getElementById("source");
var data = [];
for (var i = ; i < ul.childElementCount; i++) {
var li = ul.children[i];
//把一个字符串分割成字符串数组,并取出“空气质量:”前的字符
var strCity = li.innerHTML.split("空气质量:")[];
//把li对象下的第一个子元素的值转换为数字
var num = Number(li.children[].innerHTML);
//向data数组的末尾添加一个或多个元素,并返回新的长度
data.push([strCity, num]);
}
return data;
} function sortAqiData(data) {
data.sort(function(a, b) {
return a[] - b[];
})
return data;
} function render(data) {
var ul = document.getElementById("resort");
var items = "";
for (var i = ; i < data.length; i++) {
var aqiData = data[i];
//console.log(aqiData);
items += '<li>第' + (i + ) + '名' + aqiData[] + '空气质量:<b>' + aqiData[] + '</b></li>';
}
ul.innerHTML = items;
}
function btnHandle() {
var aqiData = getData();
aqiData = sortAqiData(aqiData);
render(aqiData);
var btn = document.getElementById("sort-btn");
//函数调用时按钮为不可用状态
btn.disabled = true;
}
function init() {
var btn = document.getElementById("sort-btn");
btn.onclick = btnHandle;
}
init();
</script>
</body>
</html>

代码不是很复杂,只要耐心的去研究,去控制台反复修改代码进行验证,很容易就能知道代码的相关含义。

demo演示

任务十五:零基础JavaScript编码(三)的更多相关文章

  1. 零基础JavaScript编码(三)总结

    任务目的 在上一任务基础上继续JavaScript的体验 接触一下JavaScript中的高级选择器 学习JavaScript中的数组对象遍历.读写.排序等操作 学习简单的字符串处理操作 任务描述 参 ...

  2. 零基础JavaScript编码(二)

    任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...

  3. 零基础JavaScript编码(一)

    任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...

  4. 任务十四:零基础JavaScript编码(二)

    任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...

  5. 任务十七:零基础JavaScript编码(五)

    任务目的 在上一任务基础上继续JavaScript的体验 接触更加复杂的表单对象 实现页面上的一个完整交互功能 用DOM实现一个柱状图图表 任务描述 参考以下示例代码,原始数据包含几个城市的空气质量指 ...

  6. 任务十六:零基础JavaScript编码(四)

    任务目的 在上一任务基础上继续JavaScript的体验 深入学习JavaScript的事件机制及DOM操作 学习事件代理机制 学习简单的表单验证功能 学习外部加载JavaScript文件 任务描述 ...

  7. 任务十三:零基础JavaScript编码(一)

    任务目的 JavaScript初体验 初步明白JavaScript的简单基本语法,如变量.函数 初步了解JavaScript的事件是什么 初步了解JavaScript中的DOM是什么 任务描述 参考以 ...

  8. IM开发者的零基础通信技术入门(三):国人通信方式的百年变迁

    [来源申明]本文原文来自:微信公众号“鲜枣课堂”,官方网站:xzclass.com,原题为:<中国通信的百年沉浮>,本文引用时已征得原作者同意.为了更好的内容呈现,即时通讯网在收录时内容有 ...

  9. 二十五. Python基础(25)--模块和包

    二十五. Python基础(25)--模块和包 ● 知识框架   ● 模块的属性__name__ # my_module.py   def fun1():     print("Hello& ...

随机推荐

  1. json处理工具类

    需要的jar包 <!-- Jackson Json处理工具包 --><dependency><groupId>com.fasterxml.jackson.core& ...

  2. Hystrix - 踩坑回忆

    1.Unable to connect to Command Metric Stream 异常 Finchley版本使用Hystrix存在此问题.网上常规解决思路: @Bean public Serv ...

  3. ajax 的error参数

    ajax发生错误会进入到error中,我们在这里把错误信息从控制台中输出出来,为了避免每次写ajax都得写好几个console.log(). 我在这里写一个模板,需要用的时候直接过来拷贝. error ...

  4. C#的datatable使用

    // 构造datatable DataTable dt = new DataTable("test_table"); dt.Columns.AddRange(new DataCol ...

  5. 如何打开java监控

    直接在cmd中输入 1.jconsole 2.jvisualvm

  6. Centos6.5上安装sonarqube6.7.6

    Centos6.5已经装备好,可以联网 sonarqube6.7.6下载地址:https://www.sonarqube.org/downloads/ 步骤: 安装MySQL5.7 MySQL详细的安 ...

  7. 新建IP核为灰色并显示there is no project open

    问题: ise显示there is no project open. “You may browse the IP Catalog but you will not be able to genera ...

  8. C#中动态调用DLL动态链接库(转)

    本来是想实现控制台程序运行时自动全屏,但是只找到VC下的实现方法(http://www.vckbase.com/bbs/prime/viewprime.asp?id=347). 其中要使用两个未公开的 ...

  9. IIS进程池异常崩溃,导致网站 service unavailable,原因排查与记录。

    昨晚十点钟的样子,网站崩溃,开始 service unavailable,最近开始业务高峰,心里一惊,麻痹肯定进程池又异常崩溃了.又碰到什么问题?上次是因为一个异步线程的问题,导致了进程池直接崩溃,后 ...

  10. Ubuntu14.04下编译安装或apt-get方式安装搭建Apache或Httpd服务(图文详解)

    不多说,直接上干货! 写在前面的话 对于 在Ubuntu系统上,编译安装Apache它默认路径是在/usr/local/apache2/htdocs 或者编译安装httpd它默认路径是在/usr/lo ...