第三周第三天笔记

1.JavaScript入门

  • JS入门三部曲:找到谁,加什么事件,发生什么事;
  • 属性:固有的特征;分为系统属性和自定义属性;
    • 系统属性:元素自带的属性,如:id,class,title,style等;
    • 自定义属性:自己命名的属性名,不是变量,不用var声明;
    • 属性的获取方式:“.”或“[]”;
      • “.”方式不用加引号,直接元素对象加属性,如:ElementObject.className;
      • “[]”方式,必须给属性添加双引号,如:ElementObject["className"];
  • 方法:后面有括号;能够完成一个动作或功能;
  • 提示种类
    • 如果一个元素存在某一属性,但是未设置,则使用的时候,就会报错: xxx is not defined;
    • 如果一个元素身上不存在此类属性,使用的时候,就会出现undefined,属性不存在不会报错;
    • 获取元素时,若未获取元素,则使用元素时,会报错:of null;
  • 函数分为定义函数和调用函数;
  • 循环中添加事件与循环本体为异步关系;即当循环结束之后,再发生事件;
var inputnodes=document.getElementsByTagName("input");//获取元素集合;
    for(var i=0;i<inputnodes.length;i++)
    {
        inputnodes[i].index=i;//添加自定义属性,将循环中的i添加给index,再使用index属性;
        inputnodes[i].onclick=function () {
            alert(this.index);//this代表外部inputnodes[i];
        }
    }
   //以上代码中,循环全部结束后,i已经是最大值4,当发生点击事件时,i均为4,当添加自定义属性后,将不同的i存储;

2.对象

  • 数据类型
    • 基本数据类型(5种):字符串string,数字number,布尔值Boolean,null,undefined;
      • undefined出现的几种情况:1)未定义;2)没有设置返回值的时候;3)对象身上的属性不存在的时候;4)定义了形参,但没有赋值,拿到的参数是undefined;
      • 基本数据类型放在栈内存;栈内存提供了供JS代码执行的环境;
    • 引用数据类型:分为对象数据类型和函数数据类型,放在堆内存中;
      • 对象数据类型:
        • 数组
        • 对象{}
        • RegExp()
        • new Date()
        • 对象数据类型存在堆内存中三个步骤:
          1. 开辟一个空间地址;
          2. 把对象中的键值对,都存在这个内存空间中;
          3. 把空间地址赋值给一个变量名,指向当前这个空间,地址放在栈内存中。
      • 函数数据类型: function定义函数;
  • 函数数据类型由两部分组成:
    • 函数的定义阶段:定义分为三步;如function add(){};
      1. 开辟一个空间地址;
      2. 把函数体内的所有JS代码以字符串的形式,存在这个空间地址中;
      3. 把这个空间地址赋值给函数名;
    • 函数的调用阶段:分两步
      1. 创建一个私有的作用域;(栈内存中为公共作用域,当函数先在自己私有作用域中查找JS代码,如果没有,则在公共作用域中查找调用,每个私有作用域中,不能相互调用);
      2. 将以前堆内存空间地址中的字符串作为JS代码来执行;
    • 函数的参数:形参和实参;
    <script>
        function fn(n,m){
            alert(n+m);//n,m为形参;
        }
        fn(1,2);//1,2为实参
        fn("1",2);
        //每调用一次函数,就形成一个私有作用域;
    </script>
    
  • 函数的定义与执行的表现形式:
    • 普通函数:具有函数名
 function add(){
        document.write("加油,努力攻克难关!");
    };
    add();//调用函数
 //第二种方法
 var aa=function (){
         document.write("加油,努力攻克难关!dfdf");
     };
     aa();
  • 匿名函数,添加事件
var odiv=document.getElementById("mass");
odiv.onclick=function(){
    alert(123);
}
  • 闭包函数:自执行函数,四种方法;
//1.()()方法
(function(index){
   alert(index);
    })(5);//index为形参,i为实参;
  //实参传送给形参,然后再执行函数内的代码;
//2.~()方法
~function(index){
      alert(index);
    }(5);
//3.+()方法
+function(index){
      alert(index);
    }(5);
//4.-()方法
-function(index){
      alert(index);
    }(5);
  • 闭包:当函数被调用的时候,会形成一个私有作用域,保护里面的变量不受外界的干扰,函数的这种保护机制叫做闭包;
  • 对象的定义和属性的替换,添加,查找(获取):
//普通定义对象
<script>
    var obj={
        name: "mydream",
        age: 18
    };
    obj.age= 28;//修改原来的属性值;
    obj.sex="man";//添加没有的自定义属性sex;
    delete obj.name;//真删除,指的是将name属性全部删除;
    obj.name=null;//假删除,指的是给name属性赋值为空;也可设置为undefined;
    alert(obj.name);//查找,即获取obj的name值;
</script>
  • 对象的特征为属性和方法;
  • 目前接触的对象:1)获取到的元素和元素集合;2)数组对象;3)普通对象:obj{};
  • 打印console,可在控制台中console中查找
    • console.log(object.属性名):打印出对象的属性值;如:console.log(obj.name);或console.log(arry[2]);
    • console.dir(object):打印出对象上的属性和方法;如:console.dir(myarr);
  • 数组中属性:
    • 索引号为属性名,如myarr[2]中,2为属性名,代表的数组元素为属性值;其中myarr["2"]与myarr[2]相同,一般数字不加双引号,不能用myarr.2来获取属性值;
    • length属性,myarr["length"]与myarr.length相同;
  • 对象遍历
    • 普通对象的遍历,用for in循环;
<script>
    var obj={
        name: "mass",
        age: 18,
        sex: "你猜"
    };
    //普通对象的遍历用for in
    for(var attr in obj){
        console.log(attr);//打印出所有的属性名;
        console.log(obj[attr]);//打印出所有的属性值;注:attr为变量,所以不加双引号;
    }
</script>
  • 数组对象的遍历,用for循环;
var myarr=new Array("mei","hao","de","yi","tian");
for(var i=0; i<myarr.length; i++){
    console.log(myarr[i]);
}
  • 实战练习:选项卡的设置思路1
    <body>
    <div class="wrap" id="awrap">
    <ul>
        <li class="mass">北京</li>
        <li class="active">天津</li>
        <li class="mass">上海</li>
    </ul>
        <div class="hide">北京是个好地方啊</div>
        <div class="show">天津也是一个不错的地方</div>
        <div class="hide">上海不是一个好的去处啊</div>
    </div>
    <script>
    //需求1:点击每个列表时,其他的列表不选中;
    //需求2:点击每个列表的同时,使每个对应的div选中,其他的隐藏;
    //思路: 在操作点击事件后,现将所有的选中清除,再添加新的选中样式;清除用for循环;
    //第一步:确定进行操作的范围即id为awrap的div中;
    var oawrap=document.getElementById("awrap");
    //第二步:获取元素对象集合-在oawrap中;
    var oli=oawrap.getElementsByTagName("li");
    var odiv=oawrap.getElementsByTagName("div");
    //第三步:给每个列表添加事件,并用for循环进行清除样式;
    for(var i=0;i<oli.length; i++){
    //通过自定义属性来赋值i
    oli[i].index=i;
    //给每个列表添加点击事件
    oli[i].onclick=function () {
        //清除列表中的选中样式
        for(i=0;i<oli.length; i++){
            oli[i].className= "";
            odiv[i].className="hide";
        }
        //设置单一样式,但此时i已经是定值,不是变量;所以需要利用自定义属性添加;
        //oli中可以用this代表此时的oli[i],但是odiv没有索引值,可以利用oli中的index值作为索引值;
        this.className="active";
        odiv[this.index].className="show";
    }
    }
    </script>
    </body>
  • 实战练习:选项卡的设置思路2
<body>
<div class="wrap" id="awrap">
    <ul>
        <li>北京</li>
        <li class="active">天津</li>
        <li>上海</li>
    </ul>
    <div>北京是个好地方啊</div>
    <div class="show">天津也是一个不错的地方</div>
    <div>上海不是一个好的去处啊</div>
</div>
<script>
    var oawrap=document.getElementById("awrap");
    var oli=oawrap.getElementsByTagName("li");
    var odiv=oawrap.getElementsByTagName("div");
    //思路1:自定义属性:把正确的i值保存在元素的私有属性(即添加的自定义属性)上;
    //思路2:闭包:即调用函数,把正确的i值保存在自己的私有作用域中;
    for(var i=0;i<oli.length;i++){
        //目的:因为此处for循环会迅速进行完,i值不会被储存,在设置特定样式中,需要每个元素的索引值,所以需要想办法,存下i值,进而使用相应的索引值;
        //利用函数调用时,会新建一个私有的作用域,进而保存住i值,通过形参来使用i值;
        (function (index) {
            //下面中oli[index]指的是使用本身的index值,获取元素;可以换成oli[i],指的是自己私有作用域中查找,不能找到,要在公共作用域中查找i,即在for循环中查找使用;
            oli[index].onclick=function () {
                //在里面只能用index;点击事件属于异步,此时不能用i,i此时为最大值;
                for(var m=0;m<oli.length;m++){
                    oli[m].className="";
                    odiv[m].className="";
                }
                //循环,是为了操作一大堆的;如果设置单独操作某个元素,必须在循环外面;
                //for循环是跟外界没有关系的,是单独的操作,就是消除属性
                //设置特定的样式时,用到索引值
                oli[index].className="active";
                odiv[index].className="show";//目的,就是获得当下的索引值,进而查找元素;
            }
        })(i);
    }
</script>
</body>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,150评论 0 13
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 9,209评论 0 3
  • HTML 5 HTML5概述 因特网上的信息是以网页的形式展示给用户的,因此网页是网络信息传递的载体。网页文件是用...
    阿啊阿吖丁阅读 3,904评论 0 0
  • 上了大学后,经常被这样告诉:大学,若是遇见了喜欢的人就勇敢去追,不要让自己后悔,大学时谈一次恋爱真的很美好! 温涂...
    风吾we阅读 217评论 1 0
  • 观点如潮水逆流 唯独心声不息 文 | Grace 2018年的春节去了一趟香港游玩,最大的目的是想带孩子去迪士尼玩...
    壹诧阅读 552评论 0 0