JS复习—Dom脚本化文档

Dom脚本化文档

一、选取文档元素

(1)用指定的id属性

var section1 = document.getElementsById(‘section1‘);

注意:在低于IE8的浏览器中,getElementById()对匹配元素的Id不分大小写,也返回匹配name的元素。

(2)用指定的name属性

定义:name属性只存在少数的HTML元素,包括表单、表单元素、<iFrame>和<img>元素

var radioButtons = document.getElementsByName("form_1");

注意:为某些HTML元素设置name属性值将自动转换为Window对象中创建的属性,对Document对象也来类似。

 <form name = "form_1">
 var form_1 = document.form_1;

(3)通过标签名获取元素

  var lis = document.getElementsByTagName("li");

注意:

Elements类中也定义getElementsByTagName()方法,其原理和Documents版本一样,但是它只选取调用该方法的后代元素

  <ul id="ul_1">
        <li></li>
        <li></li>
        <li></li>
    </ul>
var ul = document.getElementById("ul_1");
var lis = ul.getElementsByTagName("li");

(4)通过css类选择元素

注意:

Elements类中也定义getElementsByClassName ()方法,其原理和Documents版本一样,但是它只选取调用该方法的后代元素

 //  查找以"log"命名并且有"error"和"fatal"类的元素的所有后代
var log = document.getElementById("log");
var fatal = log.getElementsByClassName("error fatal");

(5)通过CSS选择器选取元素 querySelectorAll()方法和querySelector()方法

querySelector()方法:接收一个CSS选择符,返回与该模式匹配的第一个元素,如果没有找到匹配的元素,返回null.

A在document类型调用

//取得body元素
var body = document.quetySelector("body");

B、在Element类型调用

会在该元素后代元素的范围内查找匹配的元素

querySelectorAll()方法:接收一个CSS选择符,但是返回的事所有匹配的元素而不仅仅是一个元素。这个方法返回的事一个NodeList的实例

调用类型:Document、DocumentFragment和Element

例子:

//取得所有<p>元素中的所有<strong>元素
var strongs = document. querySelectorAll("p strong");

  matchesSelector()方法

定义:这个方法接收一个参数,如果调用元素与该选择符匹配,返回true;否则返回false.

if (document.body.matchesSelector("body.page1")){
  //true

}

二、文档结构和遍历

1、节点的类型

(1)节点访问属性

nodeType:表明节点类型

nodeName:节点名字

nodeValue:节点值

(2)节点的关系属性

子节点:

childNodes属性

firstchild属性

lastchild属性

父节点:

parentNode

同胞节点:

previousSibling属性

nextSibling属性

三、设置和获取属性的方法

1、获取元素对象的属性

(1)getAttribute()

(2)attributes属性,代表元素的所有属性。可以用数字索引访问,也可以用属性名索引

document.body.attributes[0];
document.body.attributes["onload"];
docuemnt.body.bgcolor

2、setAttribute()

3、hasAttribute()

4、remove Attribute()

注:数据集属性

在HTML5文档中,任意以“data-”为前缀的小写属性名字都是合法的,HTML5还在Element对象上定义dataset属性,该属性指代一个对象,它的属性对应该去掉前缀data-属性。如dataset.x 应该保存data-x的值。待连字符的属性应用于驼峰命名法的属性名:data-jquery-test属性应该变成dataset.jqueryTest属性

三、元素节点的内容

1、innerHTML

2、textContent

3、innetText

四、创建、插入、删除节点

1、创建

(1)createElement()方法可以创建一个元素节点。

document.createElement(‘p‘); //创建一个元素节点

(2)createTextNode()方法创建一个文本节点。

var text = document.createTextNode(‘段落‘); //创建一个文本节点
p.appendChild(text); //将文本节点添加到子节点末

(3)cloneNode()方法可以把子节点复制出来。

var box = document.getElementById(‘box‘);
var clone = box.firstChild.cloneNode(true); //获取第一个子节点, true表示复制内容
box.appendChild(clone); //添加到子节点列表末尾

2、插入

(1)appendChild()方法讲一个新节点添加到某个节点的子节点列表的末尾上。

var box=document.getElementById(‘box‘); //获取某一个元素节点
var p=document.createElement(‘p‘); //创建一个新元素节点<p>
box.appendChild(p); //把新元素节点<p>添加子节点末尾

(2)insertBefore()方法可以把节点创建到指定节点的前面。

box.parentNode.insertBefore(p, box)

3、替换和删除

(1)repalceChild()方法

replaceChild()方法可以把节点替换成指定的节点。

box.parentNode.replaceChild(p,box); //把<div>换成了<p>

(2)removeChild()方法

removeChild()方法可以把

box.parentNode.removeChild(box); //删除指定节点

五、操纵样式

1、操作元素

(1)行内样式,操作style属性, 可读可写,style属性仅仅只能获取行内的CSS样式,对于另外两种形式内联<style>和链接<link>方式则无法获取到

例子:

var box = document.getElementById(‘box‘); //获取box
box.style.cssFloat.style.fontSize;

(2)、行内、 内联和链接getComputedStyle或 currentStyle可读不可写

window对象下提供了getComputedStyle()方法。 接受两个参数,需要计算的样式元素,第二个伪类(:hover),如果没有没有伪类,就填null。PS: IE不支持这个DOM2级的方法,但有个类似的属性可以使用currentStyle属性。

varbox=document.getElementById(‘box‘);

varstyle=window.getComputedStyle?

window.getComputedStyle(box,null):null||box.currentStyle

(3)、内联和链接cssRules或 rules, 可读可写

var sheet = document.styleSheets[0] ;  //CSSStyleSheet

var rules  = sheet.cssRules|| sheet.rules; //CSSRuleList,样式表的规则集合列表

varrule = rules[0]; //CSSStyleRule,样式表第一个规则

2、脚本化CSS类

因为class在JavaScript中是保留字,所以HTML属性class在JavaScript中应该使用className。className中能指定零个一个类名,如果有多个类名 就无法工作了。

e.className = "attention";

e.className = "Null";

HTML5解决了这个问题,为每个元素定义了classList属性:一个只读的类数组对象。定义了add()和remove()方法(添加和删除一个类名)。toggle()表示如果不存在类名就添加一个,否则删除它。contains()方法检测class属性中是否包含一个指定的类名。

六、专有扩展

1、文档模式

从 IE6开始开始区分标准模式和混杂模式(怪异模式),主要是看文档的声明。 IE为document对象添加了一个名为 compatMode属性,这个属性可以识别 IE浏览器的文档处于

什么模式如果是标准模式,则返回 CSS1Compat,如果是混杂模式则返回 BackCompat。

if (document.compatMode == ‘CSS1Compat‘) {

alert(document.documentElement.clientWidth);

} else {

alert(document.body.clientWidth);

}

2、children属性

由于子节点空白问题, IE和其他浏览器解释不一致。虽然可以过滤掉,但如果只是想得到有效子节点,可以使用 children属性

var box = document.getElementById(‘box‘);

alert(box.children.length); //得到有效子节点数目

3、contains()方法

断一个节点是不是另一个节点的后代,我们可以使用 contains()方法。这个方法是 IE率先使用的,开发人员无须遍历即可获取此信息。

var box = document.getElementById(‘box‘);

alert(box.contains(box.firstChild)); //true

4、滚动

document.getElementById(‘box‘).scrollIntoView(); //设置指定可见

时间: 2024-12-21 13:52:24

JS复习—Dom脚本化文档的相关文章

第十三章 脚本化文档

客户端javascript存在使得静态的html文档编程了交互式的web应用.校本化web页面内容是javascript的核心目标.本章———本书最重要的章节之一,阐述了它是如何做到的客户端javascript的存在使得静态的html文档变成了交互式的web应用.校本化web页面javascript核心目标.本章将阐述它是如何做到的. 第11章和12章解释了每一个web浏览器窗口.标签也和框架由一个window对象所示.每个window对象有一个document对象,document对象表示窗口

脚本化文档

每个Window对象有一个document属性引用了Document对象.Document对象表示窗口的内容.它并非独立的,它是一个巨大的API中的核心对象,叫做文档对象模式DOM,它代表和操作文档的内容. 文档对象模式DOM是表示和操作HTML和XML文档内容的基础API.HTML文档的树状结构包含表示HTML标签或元素(如<body><p>)和表示文本字符串的节点,它也可能包含表示HTML注释的节点 每个方框是文档的一个节点,它表示一个Node对象.我们将在后续几节中讨论nod

脚本化文档(1)

DOM概览 上图的每个方框是文档的一个节点,它表示一个Node对象. 注意,通用的Document和Element类型与HTMLDocument和HTMLElement类型之间是有严格的区别的.Document类型代表一个HTML或XML文档,Element类型代表该文档中的一个元素.HTMLDocument和HTMLElement子类只是针对于HTML文档和元素. 选择文档元素 获取文档的一个或多个元素有如下方法: 用指定的id属性 用指定的name属性 用指定的标签名字 用指定的CSS类(c

脚本化文档(一)

getElementById():Document对象的该方法通过id获取元素,在低于IE8版本的浏览器中,getElementById()对匹配元素的ID不区分大小写,而且也返回匹配name属性的元素. getElementsByName():Document对象的该方法通过name属性获取html元素,该函数定义在HTMLDocument类中,而不在Document类中,所以它只针对HTML文档可用,在XML文档中不可用.,在IE中,getElementsByName()也返回id属性匹配指

脚本化文档(二)

获取和设置非标准HTML属性:Element类型还定义了getAttribute()个setAttribute()方法来查询和设置非标准的HTML属性.也可以用来查询和设置XML文档中元素上的属性.这些方法和前面的基于API之间的区别有:1)属性都被看做是字符串.getAttribute()不返回数值.布尔值或对象:2)方法使用标准属性名,甚至当这些名称为JavaScript保留字时也不例外.对HTML元素来说,属性名不区分大小写. hasAttribute()和removeAttribute(

javascript脚本化文档

1.getElememtById /** * 获取指定id的的元素数组 */ function getElements(/*ids...*/) { var elements = {}; for(var i = 0; i < arguments.length; i++) { var id = arguments[i]; var elt = document.getElementById(id); if (elt == null) throw new Error("No element wit

XML DOM 遍历Xml文档

1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <book category="children"> <title lang="en">Harry Potter</title> <author>J K. Rowling</author> <year>200

org.w3c.dom(java dom)解析XML文档

位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效果可能会不理想 首先来了解点Java DOM 的 API:1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 2.解析器:DocumentBuilder 创建方法:通过解析器工厂类来获得 DocumentBu

PHP中利用DOM创建xml文档

DOM创建xml文档 用dom创建如下文档: <booklist> <book id="1"> <title>天龙八部</title> <author>金庸</author> <content> <![CDATA[ 天龙八部是金庸写的一本武侠小说,非常好看! ]]> </content> </book> </booklist> 实现步骤:1.创建DOM对象