百度前端技术学院-task2.18-2.19源码以及个人总结

源码:http://yun.baidu.com/share/link?shareid=2310452098&uk=1997604551

1、感觉在写js的时候,最好先理清思路,先干什么,在干什么,不要想到哪里写到哪里;

2、一定要学会调试js,不然你哗哗写了好多,结果一运行,却不知问题出到哪里,那就是浪费时间;

3、正则表达式的写法,以及如何运用,有两种方式,分别采用test()和match();

var pattern=/^[+,-]?\d+$/;
    iptValue=ipt.value.trim();
    if(!pattern.test(iptValue)){
        alert("请确认输入的是数字?");
        return;
    }
if(!city.match(/^[A-Za-z\u4E00-\u9FA5]+$/)){
        alert("城市名必须为中英文字符!")
        return;
    }

4、事件的绑定,IE和其他浏览器的区别,这段代码可以保存起来,用到的概率很大

//绑定事件函数
function on(element,eventName,listener){
    if (element.addEventListener){
        element.addEventListener(eventName,listener,false);
    }
    else if (element.attachEvent){
        element.attachEvent(‘on‘+eventName,listener);
    }
    else
        element[‘on‘+eventName]=listener;
}on(mybt,‘click‘,addBtnHandle);

5、就是如何获取事件对象和目标

//获取事件对象和事件的目标
var EventUtil={
    getEvent:function(event){
        return event ? event:window.event;
    },
    getTarget:function(event){
        return event.target||event.srcElement;
    }
}

6、事件委托实现。将事件绑定在多个兄弟元素的父元素上,再通过target.id来确定是那个元素是目标id了;部分代码摘入如下。

 event=EventUtil.getEvent(event);
    var target=EventUtil.getTarget(event);
    var tt;
        switch(target.id){//
        case "l-input":
            if (validate()){
                t.unshift(ipt.value);
            }
        break;
        case "r-input":
            if (validate()){
                t.push(ipt.value);
            }
       break;

7、下面两段涉及到很多知识,包括removeChild, target.tagName.toLowerCase(), target.dataset.num,(e.g. data-num="2"); parseInt;parentNode等等。

event=EventUtil.getEvent(event);
    var target=EventUtil.getTarget(event);
        if (target.tagName.toLowerCase() === ‘span‘) {//记得要转化为小写;
            numUl.removeChild(target);
            var tt=target.dataset.num;//如何获取自定义元素的值;
            removeData(tt);
            alert("移除"+target.innerHTML);//innerHTML也可以用来读;
    }

//第二段代码
event=EventUtil.getEvent(event);
    var target=EventUtil.getTarget(event);
    var tt=target.parentNode.dataset.num;//父节点的获取
    tt=parseInt(tt);
        if (target.parentNode.tagName.toLowerCase() === ‘span‘) {
            numUl.removeChild(target.parentNode);
            alert("移除"+removeData(tt));
    }

8、排序,冒泡排序也不会写了....我就是个坑。

每次比较相邻的两个数,一次循坏结束,最后一个就是最大或者最小的,因此,第二次循坏比较的时候,要减少一次比较的次数,这样一直比较下去。

 for(var i=0;i<length-1;i++){
        for(var j=0;j<length-i-1;j++){
            if (t[j]>t[j+1]){
                tem=t[j];
                t[j]=t[j+1];
               t[j+1]=tem;
            }
        }
    }

9、在你用js将text输入到htmL的时候,可以添加class,自定义属性,id等等,这样就可以在设置css的时候,或者js中派上用场。

10、如何创建一个元素,并向其中加入子元素和内容等。还有为其设置style属性。

var newSpan = document.createElement(‘span‘);
        var newSpanText = document.createElement(‘div‘);
        newSpan.style.position = ‘relative‘;
        newSpanText.innerHTML = numbers[i];
        newSpanText.style.position = ‘absolute‘;
        newSpanText.style.bottom = ‘-1.5em‘;
        newSpan.style.width = ‘20px‘;
        newSpan.style.height = numbers[i] + ‘px‘;
        newSpan.appendChild(newSpanText);
        switch (method) {
            case ‘leftIn‘:
                result.insertBefore(newSpan, spans[0]);
                break;
            case ‘rightIn‘:
                result.appendChild(newSpan);
                break;
        }

未来路还很长,继续加油。

时间: 2024-08-09 02:54:34

百度前端技术学院-task2.18-2.19源码以及个人总结的相关文章

百度前端技术学院任务-01

这两天发现了一个很不错的学习前端的地方:百度前端技术学院. 里面有不同类型的任务,任务之间的难度是递增的,很适合作为练习. 下面是任务-01的代码(并没有涉及到CSS): <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>百度前端技术学院任务-01</title> </head> <bod

百度前端技术学院task1.10

任务十:Flexbox 布局练习 面向人群: 有一定HTML及CSS基础的同学 难度: 中 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终

百度前端技术学院task1.12

任务十二:学习CSS 3的新特性 面向人群: 初学者 难度: 简单 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终没有被我们采纳的方案,同

百度前端技术学院task1.9

任务九:使用HTML/CSS实现一个复杂页面 面向人群: 有一定HTML/CSS基础的同学 难度: 中等 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去

【碎碎念】百度前端技术学院春季班

早上迷迷糊糊被读研阶段的室友的微信叫醒了,邀约组队参加百度前端技术学院春季班(http://ife.baidu.com/),前室友在前端方面还是有一定造诣的,自己本身对前端开发又有一定兴趣,因此准备组团参与下. 想想我的技能树长得确实有点奇葩,最早是做嵌入式的,做了三个月点唱机跑去做产品和实施,跑完了大半个福州高校做某系统推广与实施后觉得做开发的童鞋的Bug有点多就边实施边改代码,久而久之就慢慢转向了开发,想想读研阶段白天上班写C#晚上下班写实验室的Java横向项目的经验也是蛮奇葩的,导致现在我

百度前端技术学院—-小薇学院(HTML+CSS课程任务)

任务一:零基础HTML编码 课程概述 作业提交截止时间:04-24 重要说明 百度前端技术学院的课程任务是由百度前端工程师专为对前端不同掌握程度的同学设计.我们尽力保证课程内容的质量以及学习难度的合理性,但即使如此,真正决定课程效果的,还是你的每一次思考和实践. 课程多数题目的解决方案都不是唯一的,这和我们在实际工作中的情况也是一致的.因此,我们的要求不仅仅是实现设计稿的效果,更是要多去思考不同的解决方案,评估不同方案的优劣,然后使用在该场景下最优雅的方式去实现.那些最终没有被我们采纳的方案,同

百度前端技术学院-task1.3源代码

因为其中有图片,所以就给有图片的位置加了边框和设置了大小,这样哪怕图片不显示也可以知道在哪里. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Task1-3</title> <link rel="shortcut icon" href="/sjq_ico.png" /> <style

(作业)百度前端技术学院 任务八:响应式网格(栅格化)布局

百度前端技术学院 任务八:响应式网格(栅格化)布局 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>IFE Task1-8</title> <style> body{ margin:0; } .container{ box-sizing: border-box; padding: 10px;

百度前端技术学院-task1.8源代码以及个人总结

通过这次任务的练习我学到了很多,现将所学到的以及遇到的问题总结如下. 源码地址:http://pan.baidu.com/s/1kVB2VZL 下面出现的代码,都是摘自这个上面的源码 1.终于明白了absolute,relative,float的用法了,这三者结合在一起真的很强大.当然要注意的就是清除浮动了. 清除浮动所用的代码: .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; line-he