在《JavaScript DOM编程艺术》的一些笔记

第二章

(2.1)程序设计语言分为:
“解释型”(需要解释器,执行到有关代码才能发现错误)、
“编译型”(需要编译器,编译阶段就能发现错误)

(2.2.5)声明数组

    var arr = [ "John" , 12 , false ];//不介意类型

(2.2.6)声明对象

    var arr = {
        name : "John" ,
        year : 1940
    };

(2.6)函数
变量命名:下划线分隔
函数命名:驼峰命名法

(2.7)对象
【内建对象】:Array、Math、Date…——(内建在JS里的对象)
【宿主对象】:window(浏览器窗口本身)、document(浏览器窗口内的网页内容)——由浏览器提供的对象)
【用户定义对象】

第三章

“D”:document,浏览器窗口内的,文档对象
“O”:object,三种对象
“M”:model,一张城市街道图,代表着一个实际存在的城市
——“DOM”代表着加载到浏览器窗口的当前网页

(3.4)节点(node)
【元素节点】:<html><p>…(每个元素都是一个对象!)
【文本节点】:如果一份文档完全由一些空白元素构成,它将只有一个结构,没有内容
【属性节点】:用来对元素做出更具体的描述
这里写图片描述

(3.4.4)CSS
继承 , 是CSS的一项强大功能。
节点树上的各个元素将继承其父元素的样式属性

也就是给body设置CSS样式,它不仅作用于那些直接包含在<body> 标签里的内容,还将作用于嵌套在body元素内部的所有元素

(3.4.5)获取元素
3种方法:
1.getElementById(是宿主对象document特有的函数注意大小写)
- 返回一个元素对象

 document.getElementById("hsy");

2.getElementsByTagName
- 返回一个对象数组
- 可以通过 node.getElementsByTagName("*"); 获取内含的所有元素(嵌套多深的都算)个数

3.getElementsByClassName
- 返回一个对象数组,且与索引关键字的类名实际顺序无关,就算元素还带有更多类名也没关系,依旧被搜到
- 只有较新的浏览器支持,聪明的程序源想出了下面的方法:

            function getElementsByClassName(obj,className){
                if(obj.getElementsByClassName){
                    return obj.getElementsByClassName(className);
                } else {
                    var arr = [];
                    var nodeList = obj.getElementsByTagName("*");
                    for(var item = 0; item < nodeList.length; item++){
                        if(nodeList[item].className.indexOf(className) != -1){
                            arr.push(nodeList[item]);
                        }
                    }
                        return arr;
                }
            }

            var myBody = document.getElementById("bod");
            var result = getElementsByClassName(myBody,"div1");
            console.log(result);    

(3.5)获取和设置属性
【获取属性】(getAttribute)
- 通过上面获取元素的方法后,我们就可以设法(getAttribute)获取它的各个属性啦!
- getAttribute不属于document对象,只能通过 元素节点对象 调用
- 若找不到,getAttribute会返回null,故可以用判断 if ( xx !=null ),等价于 if ( xx )


补充:

for...in,由于历史遗留问题,
    var paras = document.getElementsByTagName("p");
    for(var item in paras){
        alert(item);//会弹出paras对象数组的各个 属性名称 ,注意!是名称
                    //对于数组来说,也就是他们的下标0/1/2…
    }

for...of,会枚举对象数组的各个对象,注意,是一整个对象!

【设置属性】(setAttribute)
- 注意:
- DOM的工作模式:①先加载文档的静态内容;②(将静态内容画出来后)再动态刷新,动态刷新不影响文档的静态内容。
- DOM可以在对页面内容进行刷新,而不需要在浏览器里刷新页面。

###总结:
操纵“元素节点”,对象是document:
1、document.getElementById( );
2、document.getElementsByTagName( );
3、document.getElementsByClassName( );

操纵“属性节点”,对象是元素节点:
1、node.getAttribute( );
2、node.setAttribute( );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值