从零开始学习javascript项目(3)

从零开始学习javascript项目(3)

任务描述

  • 参考以下示例代码,用户输入城市名称和空气质量指数后,点击“确认添加”按钮后,就会将用户的输入在进行验证后,添加到下面的表格中,新增一行进行显示
  • 用户输入的城市名必须为中英文字符,空气质量指数必须为整数
  • 用户输入的城市名字和空气质量指数需要进行前后去空格及空字符处理(trim)
  • 用户输入不合规格时,需要给出提示(允许用alert,也可以自行定义提示方式)
  • 用户可以点击表格列中的“删除”按钮,删掉那一行的数据

task.html

<!DOCTYPE>
<html>
  <head>
    <meta charset="utf-8">
    <title>IFE JavaScript Task 01</title>
    <script src="task.js"></script>
  </head>
<body>

  <div>
    <label>城市名称:<input id="aqi-city-input" type="text"></label><br>
    <label>空气质量指数:<input id="aqi-value-input" type="text"></label><br>
    <button id="add-btn">确认添加</button>
  </div>
  <table id="aqi-table">
  <!-- 
    <tr>
      <td>城市</td><td>空气质量</td><td>操作</td>
    </tr>
    <tr>
      <td>北京</td><td>90</td><td><button>删除</button></td>
    </tr>
    <tr>
      <td>北京</td><td>90</td><td><button>删除</button></td>
    </tr>
   -->
  </table>

</body>
</html>

task.js

var aqiData = {};
function addAqiData() {
}

function renderAqiList() {
}

function addBtnHandle() {
  addAqiData();
  renderAqiList();
}

function delBtnHandle() {
  renderAqiList();
}

function init() {
}

init();

任务规划

  • html文件对js文件的引用
  • 在用户点击提交以后抓取表单的数据
  • 对表单的数据进行判断
  • 把表单里面的数据放入一个数组里面(二维数组)
  • 把数据按照正确的格式显示出来
  • 在用户点击提交或者删除按钮的时候更新显示的数据。

对js文件的引用

<script src="xx.js"></script>//这里使用相对地址就好了,因为这个js文件的地址和html文件放在一个目录下面所以直接引用没问题

抓取表达数据

还是我们之前说了无数次的操作 DOM ,不罗嗦。

var cityInput = document.getElementById("aqi-city-input");
var aqiInput = document.getElementById("aqi-value-input");

把采集到的数据放入hash表中

由于这里涉及到用户的自由输入,所以我们需要对用户的数据进行一些必要的处理和保护措施,避免发生一些尴尬的结果。

  • 删除输入数据前后文的空格
  • 保证cityInput里面为英文或者汉字
  • 保证aqiInput里面数据为数字

在完成以上三个步骤以后再把cityInputaqiInput里面的数据放到一个hash表里面。

删除多余空格

我们先来回忆一下如果我们用 vim 应该怎么办?

删除行首

:%s/^\s+//

删除行尾

:%s/\s+$//

PS:( markdown 语法好像还不支持 vim script .拿 perl 的语法高亮将就一下了。不要在意这些细节。)

然而 javascript 里面并不需要我们这么做才能删除行首和行尾的空格。javascript 里面有一个自带的方法,那就是trim方法。实际上trim这个方法也是通过类似的方法实现删除行首行尾的空格的。但是我们并不能看到trim这个函数的执行过程。我并不清楚这个函数实际上用了怎么样的一个正则表达式。具体来说是这样用的。

var city = cityInput.value.trim();
var aqi = aqiInput.value.trim();

判断输入字符

  • 城市名应当为中文或者英文

    /^[A-Za-z\u4E00-\u9FA5]+$/
    
  • 空气质量只能为数字

    /^\d+$/
    

把采集到的数据放入关联数组里面

var aqiData = {};
aqiData[city] = aqi;

在点击删除和提交按钮的时候把数组打印出来

这部分也是操作DOM

//打印数组
function renderAqiList(){
  var items = "<tr><td>城市</td><td>空气质量</td><td>操作</td></tr>"
  for(var city in aqiData){
    items += "<tr><td>"+city+"</td><td>"+aqiData[city]+"</td><td><button data-city='"+city+"'>删除</button></td></tr>"
  }
  document.getElementById("aqi-table").innerHTML = city ? items : "";
}

//点击添加按钮执行的操作
function addBtnHandle(){
    addAqiData();
    renderAqiList();  
}
//点击删除按钮执行的操作
function delBtnHandle(city) {
    delete aqiData[city];
    renderAqiList();
}

这样这一个任务就算完成了,其实我是想借助这个机会讲一讲原型链的,但是没有找到合适的机会,还是看我们下一个任务里面有没有合适的机会了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容