美文网首页
[笔记4]JavaScript DOM编程艺术_DOM

[笔记4]JavaScript DOM编程艺术_DOM

作者: fumier | 来源:发表于2017-01-14 21:01 被阅读11次

    DOM

    当创建了一个网页并把它加载到Web浏览器中时,你编写的网页文档就会转换为一个文档对象

    对象

    JS语言里的对象可以分为三种类型:

    • 用户定义对象:由程序猿自行创建的对象
    • 内建对象:内建在JS语言里的对象,如Array,Date,Math
    • 宿主对象:由浏览器提供的对象(最基础的对象是window对象)

    PS:一直在用,却不知道它的基础分类

    window对象对应着浏览器窗口本身,这个对象的属性和方法通常统称为BOM(浏览器对象模型)。BOM提供了window.open和window.blur等方法。

    document的主要功能就是处理网页内容

    DOM代表着加载到浏览器窗口的当前网页。DOM把一份文档表示为一棵树。更具体的说,DOM把文档表示为一棵家谱树。家谱树本身就是一种模型。DOM的原子是元素节点

    <p title="a gentle reminder">Don't forget to buy this stuff.</p>

    节点分类 实例
    属性节点 title="a gentle reminder"
    文本节点 Don't forget to buy this stuff

    CSS

    CSS层叠样式表,告诉浏览器应该如何显示一份文档的内容。

    语法:
    selector{
    property:value;
    }
    

    继承是CSS技术中的一项强大功能。CSS也把文档的内容视为一颗节点树。节点树上的各个元素将继承其父元素的样式属性。

    例子:
    body{
    color:white;
    background-color:black;
    }
    

    这些颜色不仅作用域那些直接包含在<body>标签里的内容,还将作用域嵌套在body元素内部的所有元素。

    为了把某一个或某几个元素与其它元素区分开来,需要使用class属性或者id属性

    PS:class属性可以帮了对多个元素进行样式定义。id属性是在网页里的某个元素加上一个独一无二的标志符,为特定id属性值的元素定义一种独享的样式。

    尽管id本身只能使用一次,样式表还是可以利用id属性为包含在该特定元素里的其它元素定义样式。
    purchases li{
    font-weight:bold;
    }

    获取元素

    三种方式获得元素节点,分别是通过元素ID、通过标签名字和通过类名来获取。

    • getElementById 是document对象特有的函数。document.getElementById(id),例如:document.getElementById("purchases")

    typeof操作符用来验证操作数是一个字符串、数值、函数、布尔值还是对象。如 typeof document.getElementById("purchases"),它的值是object。

    文档中的每一个元素都是一个对象。利用DOM提供的方法能得到任何一个对象。

    • getElementsByTagName 如果你的元素没有id,可以通过该方法获取没有id属性的对象。该方法返回一个对象数组,每个对象分别对应着文档里有着给定标签的元素。例如:document.getElementByTagName("li")

    getElementsByTagName允许把一个通配符作为它的参数。通配符(星号字符“*”)必须放在引号里,这是为了让通配符与乘法操作符有所区别。

    如果你想知道某份文档里总共有多少个元素,用通配符即可。
    document.getElementsByTagName("*").length;

    实例:getElementById和getElementsByTagName结合起来运用。如果想知道id属性值是purchase的元素包含着多少个列表项,必须通过一个更具体的对象去调用这个方法。
    var shopping=document.getElementById("purchases");
    var items=shopping.getElementsByTagName("*");
    
    • getElementsByClassName 通过class属性中的类名来访问元素。返回具有相同类名的数组元素。使用这个方法还可以查找那些带有多个类名的元素。要指定多个类名,只要用空格分隔类名即可。其中类名的顺序不重要

    知识盘点:

    • 一份文档就是一颗节点树
    • 节点分为不同的类型:元素节点、属性节点和文本节点
    • getElementById返回一个对象,该对象对应着文档里的一个特定的元素节点。
    • getElementsByTagName和getElementByclassName将返回一个对象数组,它们分别对应着文档里的一组特定的元素节点。
    • 每个节点都是一个对象

    获取和设置属性

    getAttribute

    object.getAttribute(attribute)获取元素属性。注意它不属于document对象,所以不能用document对象调用。只能通过元素节点对象调用。

    在JavaScript中null的含义是“没有值”,if(something)与if(something!=null)完全等价,如果something存在,则if语句的条件将为真;如果something不存在,则if语句的条件将为假。

    setAttribute

    setAttribute允许对属性节点值作出修改,与getAttribute一样,setAttribute也只能用于元素节点。object.setAttribute(attribute,value)
    如果一个元素没有对应属性。setAttribute实际上完成两个操作:先创建这个属性,然后设置它的值。

    一个非常值得关注的细节:通过setAttribute对文档做出修改后,在通过浏览器的view source(查看源代码)选项去查看文档的源代码时看到的仍将是改变前的属性值,也就是说setAttribute做出修改不会反映在文档本身的源代码里。这种表里不一的现象源自于DOM的工作模式:先加载文档的静态内容,再动态刷新,动态刷新不影响文档的静态内容。这正是DOM的真正威力:对页面内容进行刷新却不需要再浏览器里刷新页面。

    相关文章

      网友评论

          本文标题:[笔记4]JavaScript DOM编程艺术_DOM

          本文链接:https://www.haomeiwen.com/subject/fsczmttx.html