百度前端学院task16总结

task16:
代码地址:https://github.com/sunyueru/IFE/tree/master/task16
demo:https://sunyueru.github.io/IFE/task16/task16.html

task16的总结
task16是要实现一个动态添加和删除的功能。操作的对象是一个aqiData对象。先说一下两个操作:
为对象添加属性:直接赋值aqiData[strCity]=strValue;
为对象删除属性:使用delete delete aqiData[strCity];
可以参考这部分的操作:

var xiaoming = {
    name: '小明'
};
xiaoming.age; // undefined
xiaoming.age = 18; // 新增一个age属性
xiaoming.age; // 18
delete xiaoming.age; // 删除age属性
xiaoming.age; // undefined
delete xiaoming['name']; // 删除name属性
xiaoming.name; // undefined
delete xiaoming.school; // 删除一个不存在的school属性也不会报错

本任务的注意点:

  1. 正则表达式的使用(简单总结)
  2. 如何渲染一个表格(for in的使用)
  3. addEventListener及dom2级事件处理程序的相关知识

    1、正则表达式的使用:
    语法:正则表达式主体/修饰符
    不同的修饰符意义不一样,不同格式的表达式主体意义也不一样。这里先不总结那么多,之后单独写一个正则表达式吧。
    字符串方法:search()和replace()方法。
    举例子:

<body>
<p>搜索字符串 "Runoob", 并显示匹配的起始位置:</p>
<button onclick="myFunction()">点我</button>
<p id="demo"></p>
<script>
function myFunction() {
    var str = "Visit Runoob!"; 
    var n = str.search("Runoob");
    document.getElementById("demo").innerHTML = n;
}
</script>
</body>
<body>
<p>替换 "microsoft" 为 "Runoob" :</p>
<button onclick="myFunction()">点我</button>
<p id="demo">请访问 Microsoft!</p>
<script>
function myFunction() {
    var str = document.getElementById("demo").innerHTML; 
    var txt = str.replace(/microsoft/i,"Runoob");
    document.getElementById("demo").innerHTML = txt;
}
</script>
</body>

着重强调
RegExp对象的方法:
test()和exec()
什么叫对象方法,简单的说就是:
正则对象.test(字符串)
正则对象.exec(字符串)
其中,test的返回值是true/false;exec的返回值是一个数组。具体用法这里不赘述了。
还想说一下match和exec的区别。百度了一下说,match是字符串方法,也就是说:字符串.match(正则表达式)
match的用法:http://www.w3school.com.cn/jsref/jsref_match.asp
本任务中需要判断输入的字符串是否是中英文,是否是数字:
这里使用的是match方法,具体代码:

 if(!strCity.match( /^[A-Za-z\u4E00-\u9FA5]+$/)){
      alert("城市名称必须为中英文字符!");
      return;
   }
   if(!strValue.match(/^\d+$/)){
      alert("空气质量指数必须为整数!");
      return;

简单解释一下下:
/^[ ….] + /:+ :表示以什么结尾
\d表示匹配一个数字
所以(/^[\d]+$/)意思就是以数字开头,以数字结尾,含有一个或者多个数字的表达式。
注意一下,/^[…]/和/[^…]/不一样哦。
关于正则表达式的详细介绍,可以参考:
http://www.jb51.net/article/43190.htm

有关正则表达式就先说到这里。

2、如何渲染一个表格

function renderAqiList() {
   table.innerHTML="<tr><td>城市</td><td>空气质量</td><td>操作</td></tr>";
   for(strCity in aqiData){
    var tr=document.createElement("tr");
    var td1=document.createElement("td");
    td1.innerHTML=strCity;
    tr.appendChild(td1);
    var td2=document.createElement("td");
    // td2.innerHTML=strValue;//有问题
    td2.innerHTML=aqiData[strCity];
    tr.appendChild(td2);
    var td3=document.createElement("td");
    td3.innerHTML="<button>删除</button>";
    tr.appendChild(td3);
    table.appendChild(tr);
   }
}

首先就是给table的innerHTML设置初值,然后使用for循环,不断的新增子节点,同时使用appendChild把子节点添加到父元素上。
要注意的有两点(只有我才会犯的弱智错误):
①for key in object,注意哪个是key,不要写成value了。
②错误代码:

    // td2.innerHTML=strValue;//有问题

正确代码:

    td2.innerHTML=aqiData[strCity];

3、addEventListener

语法:

element.addEventListener(event, function, useCapture)

其中,useCapture可以取true或者false。
默认是false,即冒泡。如果是true就是捕获。
btn.addEventListener(“click”,handler,false);
此外还有IE事件处理程序,与之相似:
btn.attachEvent(“onclick”,handler)
注意的是
一个是click,一个是onclick。
所以要兼容不同的浏览器的话,可以这样写:

function addListener(element, eventName, handler) {
    if (element.addEventListener) {
        element.addEventListener(eventName, handler, false);
    }
    else if (element.attachEvent) {
        element.attachEvent('on' + eventName, handler);
    }
    else {
        element['on' + eventName] = handler;
    }
}

function removeListener(element, eventName, handler) {
    if (element.addEventListener) {
        element.removeEventListener(eventName, handler, false);
    }
    else if (element.detachEvent) {
        element.detachEvent('on' + eventName, handler);
    }
    else {
        element['on' + eventName] = null;
    }
}

下次直接套用就可以了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值