JavaScript和DOM有什么区别?

15
JavaScript 和 DOM 有什么区别?DOM 和 Firefox 有关系吗?DOM 只是 HTML 元素的源代码排列顺序吗?

5
当我看到这样的问题时,我可以想象用户有许多问题但很少回答。他可能甚至不关心答案。 - BlueRaja - Danny Pflughoeft
@BlueRaja 绿色独角兽 - 你说的“他可能甚至不在乎答案。”是什么意思? - Jitendra Vyas
13
他的意思是,由于你已经发了600多个问题,但只有接受了约340个答案,这表明你提这种问题更多的是为了声誉,而不是真正的知识需要。像你这样问题与答案不匹配的情况(再加上我快速浏览了一些问题),我倾向于同意他的看法。 - Alastair Pitts
4个回答

29

DOM代表文档对象模型,顾名思义,以一种平台/浏览器无关的方式表示HTML/XML文档的结构。DOM还提供了一个API来操作DOM,其中包括像getElementsByTagNamecreateElement这样的函数。

JavaScript是一种可以在Web浏览器中执行的编程语言。JavaScript可以通过DOM scripting与DOM交互。

编辑以回答您在评论中的问题:例如,浏览器下载HTML以及任何引用的JS和CSS(以及图像、Flash等)。浏览器从HTML构建DOM,并使用CSS中指定的规则进行呈现。当页面加载、用户执行某些操作或发生任何其他事件时,JS可能会操作DOM。当DOM更改时,浏览器更新所显示的内容。


那么JavaScript和DOM脚本编写是不同的东西吗? - Jitendra Vyas
@metal-gear-solid 你使用JavaScript进行DOM脚本编写。DOM脚本编写是指使用JavaScript操作DOM。 - David Johnstone
你能用简单的例子解释一下浏览器、DOM和Javascript之间的关系吗? - Jitendra Vyas
我发现并阅读了这篇文章http://shapeshed.com/journal/dom_css_a_beautiful_couple/,但它只是介绍了我们如何使用CSS。就像Javascript一样,CSS也是基于DOM工作的吗? - Jitendra Vyas
@metal-gear-solid 我已经更新了我的答案,希望能够回答这些问题 :-) - David Johnstone
非常清晰的回答。这解决了我一些困惑。谢谢! - Marshall Alsup

10

正如其他人所说,DOM(Document Object Model)本质上是用于操作HTML(或XML)文档的API——通常使用JavaScript,因为我们在浏览器中使用的语言就是JavaScript。但并非总是如此,例如在服务器端或桌面端,也有类似于DOM的API可用于操作这些文档,比如:http://java.sun.com/j2se/1.4.2/docs/api/org/w3c/dom/package-summary.html

JavaScript只是一种编程语言。它碰巧是大多数(如果不是全部)Web浏览器的事实标准脚本语言,因此在实践中,当你想在客户端运行DOM操作脚本时,你通常会同时使用DOM和JavaScript。

然而,并不一定要这样。某人完全可以编写一个Web浏览器(或Web浏览器插件),让程序员们用Python、Ruby、C、Scheme等语言编写他们的DOM操作脚本(事实上,JavaScript最初是Netscape的Scheme编写的)。

此外,还有JavaScript解释器(甚至编译器),它们完全独立于Web浏览器运行。事实上,如果你想了解JavaScript语言的核心是什么样子,可以试着使用Mozilla的Rhino做一些简单的脚本编写:http://www.mozilla.org/rhino/。这里没有默认的DOM,没有窗口对象,没有任何与浏览器相关联的默认内容(不过你可以导入一些Java DOM包)。

我建议阅读 MDC 上旧版的 JavaScript 1.5 规范 (http://developer.mozilla.org/en/Core_JavaScript_1.5_Guide ),以及他们关于 DOM 的一些材料 (http://developer.mozilla.org/en/DOM )。


API(HTML或XML页面)= DOM + JS(脚本语言),来自DOM介绍,mdn。 - Suraj Jain

2

简单来说,JavaScript 允许你操作 DOM,即文档对象模型,它控制客户端脚本。


DOM是每个浏览器的一部分吗? - Jitendra Vyas
@金属装备实心。虽然不是必须的,但所有主要浏览器都尝试进行实现。有时实现并不完美。DOM假定底层内存模型可映射到树结构,其中每个节点(除根节点外)都有一个单一父节点。这在IE中并不总是正确的。 - Alohci
根据我阅读的论坛和评论,DOM就像一个概念?我的意思是,就像Subversion一样,你可以用不同的方式进行版本控制,例如GIT和SVN。对于DOM,您可以使用JavaScript操作HTML元素。 - eurica

2

MDC DOM

文档对象模型(DOM)是用于HTML和XML文档的API。它提供了文档的结构表示,使您能够修改其内容和视觉呈现。本质上,它将网页连接到脚本或编程语言。

虽然JavaScript是允许您操作DOM对象的编程语言。

希望这可以澄清问题。


1
@metal-gear-solid - 不对。DOM是一个API,而CSS选择器并不使用该API。 - Alohci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接