JavaScript 编程艺术的读书笔记(三)
#DOM-CORE & HTML-DOM
对于什么是DOM而言,之前,已经讨论过了,现在我们重新回过头来,分析和思考一下,有关于DOM的一些分类上的区别。
什么是 DOM?
DOM 是 W3C(万维网联盟)的标准。
DOM 定义了访问 HTML 和 XML 文档的标准:
“W3C 文档对象模型 (DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。”
W3C DOM 标准被分为 3 个不同的部分:
核心 DOM - 针对任何结构化文档的标准模型
XML DOM - 针对 XML 文档的标准模型
HTML DOM - 针对 HTML 文档的标准模型
上文是w3c对DOM的分类,基本上就是DOM-CORE 和HTML-DOM,XML-DOM不在讨论范围以内,我们暂且不管。
先说DOM-CORE吧
##DOM-CORE
满足软件开发者和Web脚本编写者,访问和操控产品项目中包含的可解析的HTML和XML内容。这个是COM-CORE的定义,从定义上看,HTML-CORE并不是单独提供给javascript的哦,也就是说,其他的语言也是可以通过HTML-CORE来操作DOM的哦,嗯,为了证实这一点,我们就用全世界最好的语言(php
)来写一段。1
<?php
$Doc = new DOMDocument();
$Doc->load("test.html");
$d = $Doc->documentElement;
foreach ($d->childNodes AS $item)
{
print $item->nodeName . " = " . $item->nodeValue . "<br />";
}
?>
这里用到了一段html1
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>test</title>
</head>
<body>
<p>hello world</p>
</body>
</html>
嗯,然后,你就会得到以下的输出:1
#text =
head = test
#text =
body = hello world
#text =
虽然不是很强大,但是也是可以的哦,嗯,以上代码的运行环境在php5以上。更多的内容参考这里。
回到js的上面,DOM-CORE对应的操作其实更多的是体现在DOM-CORE是基于节点的(NODE-BASE)
,其所有的操作都是基于该节点的操作,如下:1
<a href="url" id="id" >this is a a elemt </a>
<script>
//获取 #id 的href属性值
var node = document.getElementById('id');
var url = node.attattributes['href'].value;
//监听 #id 的click事件
node.onclick = function(e){
//do some thing
}
//创建一个节点
document.createElement();
document.createTextNode();
</script>