JavaScript DOM节点和文档类型

以下的例子以此HTML文档结构为例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>

  <div id="demo">
    <ul id="contents">
      <li id="li_1"></li>
      <li id="li_2"></li>
      <li id="li_3"></li>
    </ul><p id="p_1"></p><p id="p_2"></p>
  </div>

  <script type="text/javascript" src="javascript_dom_1.js"></script>
</body>
</html>

  

获得子节点的集合:childNodes()

var ul = document.getElementById("contents");
for(var i= 0 ; i < ul.childNodes.length; i++){
  if(ul.childNodes[i].nodeType == "1"){
    console.log(ul.childNodes[i].id);
  }
}

运行结果:

li_1
li_2
li_3

判断的节点的类型用 nodeType,下面列出一个表格表示不同类型的对应不同的值(常用):

类型
element 1
text 3
comment 8
document 9

上面的例子中,节点包括text类型和element类型,所以要判断一下是否是element类型。

获得元素的父节点:parentNode()

var li = document.getElementById("li_1");
console.log(li.parentNode.id);

运行结果:

conments

获得相邻同胞节点

previousSibling : 获得上一个同胞节点
nextSibling : 获得下一个同胞节点

var p1 = document.getElementById("p_1");
console.log(p1.previousSibling.id);
console.log(p1.nextSibling.id);

运行结果:

contents
p_2

我们看一下html代码,为什么<p>标签要放在ul后面,这里是为了方便测试,IE和其他浏览器在这里表现不同,对于其他浏览器,ul的子元素其实是有7个,而IE是3个,我们看到的确实是只有3个li,其他浏览器把li与li之间的换行视为有一个text节点,所以就有了7个节点。

获得首尾子节点

firstChild:获得第一个子节点
lastChild:获得最后一个子节点

<p id="demo2"><strong id="strong_1"></strong><a id="a"></a><strong id="strong_2"></strong></p>
var p = document.getElementById("demo2");
console.log(p.firstChild.id);
console.log(p.lastChild.id);

运行结果:

strong_1
strong_2

判断是否有子节点:hasChildNodes()

若有子元素,返回true,否则,返回false

在子节点尾部插入节点:appendChild()

var newNode = document.createElement("div");
newNode.id = "newNode";
var getDemo = document.getElementById("demo1");
getDemo.appendChild(newNode);
console.log(getDemo.lastChild.id);

运行结果:

newNode

在子节点前面插入节点:insertBefore()

insertBefore(参数1,参数2)

  • 参数1:要插入的节点
  • 参数2:节点,表示在这个节点前面插入节点,若为null,则在末尾插入
var newNode = document.createElement("div");
newNode.id = "newNode";
var getDemo = document.getElementById("demo1");
getDemo.insertBefore(newNode,document.getElementById("contents"));

console.log(getDemo.childNodes[1].id);

运行结果:

newNode

替换子节点:replaceChild()

replaceChild(参数1,参数2)

  • 参数1:要插入的节点
  • 参数2:表示要被替换的节点

可参考insertBefore()的例子。

删除子节点:removeChild()

removeChild(参数1)

  • 参数1:要删除的节点

克隆节点:cloneNode()

node.cloneNode(true|false)

  • node:被克隆的节点
  • 传入一个参数,如果是true,那么进行深复制(连同子节点一起复制),如果是false,那么进行浅复制,只复制节点本身。
var ul = document.getElementById("contents");
var deepClone = ul.cloneNode(true);
var shadowClone = ul.cloneNode(false);
console.log(deepClone.childNodes.length);
console.log(shadowClone.childNodes.length);

运行结果:

7
0

如果不传值,那么默认使用浅克隆。

Document类型

document的属性

  • document.documentElement 指向<html>元素
  • document.body 指向<body>元素
  • document.doctype 指向<!DOCTYPE>元素

HTMLDocument的属性

  • document.title 取得文档的标题
  • document.URL 取得完整的URL
  • document.domain 取得域名
  • document.referrer 取得来源页面的URL

查找元素

  • document.getElementById(id) 按id查找,返回一个节点
  • document.getElementsByTagName(tabName) 按标签名查找,返回一个集合
  • document.getElementsByName(name) 按name查找,返回一个集合,此方法只有HTMLDocument类型才有

写入

  • document.write()

示例:

document.write("<div>Hi,Michael!</div>");
var newNode = document.createElement("div");
newNode.innerHTML = "Hi,Michael!";
document.write(newNode.innerHTML);

以上两段代码的结果是相同的。

  • document.writeln()

和write()一样,只不过会自动换行

时间: 2024-10-21 15:24:36

JavaScript DOM节点和文档类型的相关文章

深入理解DOM节点类型第三篇——注释节点和文档类型节点

× 目录 [1]注释节点 [2]文档类型 前面的话 把注释节点和文档类型节点放在一起是因为IE8-浏览器的一个bug.IE8-浏览器将标签名为"!"的元素视作注释节点,所以文档声明也被视作注释节点.本文将详细介绍这两部分的内容 注释节点 [特征] 注释在DOM中是通过Comment类型来表示,注释节点的三个node属性——nodeType.nodeName.nodeValue分别是8.'#comment'和注释的内容,其父节点parentNode可能是Document或Element,

DOM节点之DocumentType类型、DocumentFragement类型

DocumentFragment类型 [定义] 在所有节点类型中,只有DocumentFragment在文档中没有对应的标记.DOM规定文档片段(document fragment)是一种“轻量级”的文档,可以包含和控制节点,但不会像完整的文档那样占用额外的资源. [特征] nodeType: 11 nodeName: #document-fragment nodeValue:null parentNode: null childNode:Element.ProcessingInstructio

html简介,版本和文档类型声明

HTML(英语:Hypertext Markup Language,简称:HTML)也叫作超文本标记语言,是一种用来结构化 Web 网页及其内容的标记语言,标准通用标记语言下的一个应用,您可以使用 HTML 来建立自己的 WEB 站点. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <bod

javaScript DOM节点树

1. 例如: <html> <head> <title>节点树<title/> <head/> <body> <p>学生信息<p/> <ul id ="ul1"> <li>姓名<li/> <li id="sex">性别<li/> <li>年龄<li/> <ul/> <bo

javascript dom节点x

一,js 获取元素(父节点,子节点,兄弟节点) var test = document.getElementById("test"); var parent = test.parentNode; // 父节点 var chils = test.childNodes; // 全部子节点 var first = test.firstChild; // 第一个子节点 var last = test.lastChile; // 最后一个子节点 var previous = test.previ

javascript dom节点的

一,js 获取元素(父节点,子节点,兄弟节点) 按 Ctrl+C 复制代码 按 Ctrl+C 复制代码 二,jquery 获取元素(父节点,子节点,兄弟节点) $("#test1").parent(); // 父节点 $("#test1").parents(); // 全部父节点 $("#test1").parents(".mui-content"); $("#test").children(); // 全

javascript DOM节点

获得子节点方式: 1.将文本内容也当成节点 childNodes firstChild lastChild 2.获得标签为内容的节点 children firstElementChild lastElementChild 原文地址:https://www.cnblogs.com/hjw123/p/10885648.html

HTML系列——文档类型DTD

文档类型通常是是HTML文件的第一行,DTD(Document Type Definition),它的作用是什么呢?文档类型定义是一种保证标准通用标记语言.可扩展标记语言文档格式正确的有效方法,可通过比较文档和文档类型定义文件来看文档是否符合规范,元素和标签使用是否正确.简单来说,就是告诉浏览器我的HTML文档代码是遵从哪个文档规范编写的,这样子浏览器才可以正确解析HTML语句,渲染DOM节点. 那么有哪些文档规范可以选择呢?(参照http://www.w3school.com.cn/tags/

DOCTYPE(文档类型)的作用是什么?

Doctype可声明三种DTD类型,分别表示严格版本.过渡版本以及基于框架的 HTML 文档. 由于历史的原因,浏览器对页面的渲染方式是不一样的.在W3C标准出来之前,浏览器对页面的渲染没有同一的标准,产生了差异,quirks mod(混杂模式或者兼容模式),但在W3C标准出台之后,浏览器对页面的渲染有了同一的标准即(严格模式或标准模式).但是为了保证以前就得页面仍然正常显示,有的浏览器就保存了这两种渲染模式(标准兼容模式).那么究竟采用哪一种方式进行渲染,就要看DOCTYPE生命中的DTD.