2011-06-20 48 views
2

在w3school网站之间的区别有两个教程:是什么HTML DOM和XML DOM

HTML DOM

XML DOM

我想知道他们的releationship,因为我觉得HTML DOM是一种XML DOM。

所以XML DOM中的方法/属性可以在HTML DOM中使用,并且HTML DOM可能拥有一些特殊的方法。

然而,当我尝试使用此:

HTML:

<span id="con">xxx</span> 

var a=document.createElement("a"); 
document.getElementById("con").appendChild(a); 

它并不在IE浏览器。

所以我想知道是什么问题?

+0

如果你想忘记浏览器相关的问题,你总是可以使用jQuery。 – eugeneK

+0

反正哪个版本的IE? – zneak

+0

我在我的应用程序中使用IE7。 – hguser

回答

2

DOM指的是你做出来的XML树。树由节点组成。例如:

<a x="bb"> 
    <b> text </b> 
</a> 

变成有三个节点树:一个用于a,一个用于b和一个文本。节点包含作为字段的属性。所以a节点将有一个字段:x="bb"

HTML(实际上)是XML,因此您可以从中构建DOM树。 HTML只是带有预定义元素的XML。即,不能使用任何想要的元素名称(不能使用<children>,<ball>,...),您可以使用预定义名称(a,span,div,...)。

我说“实际上”,因为HTML通常是破损的XML(例如使用<br>是错误的XML,您应该使用<br />代替)。浏览器有智能解析器,它们知道如何克服这个破碎的XML,并从HTML中构建一个可用的树。

+0

谢谢,但在xml中,元素有一个“appendChild”方法,但为什么它在我的例子中不起作用?此外,在XML DOM中,有一个类元素。例如,document.getElementById(“xx”)将返回元素,我想知道当我在html中使用docxx.getxxId()时返回类型是什么? – hguser

+0

'docxx.getxxId()'是什么意思?你是对的,从HTML创建的DOM树中的节点有我没有指定的方法。 'node.getElementById(x)'返回一个id属性等于'x'的子节点。 “节点”的类型是“元素”或“HtmlElement”,或者更具体地说是某种类型的元素,例如'AnchorElement'。 'document'是DOM树的根,所以'document.getElementById()'扫描整个HTML。 – Guy

+0

然后我们可以使用document.getElementById(“xx”)。getElementById(“xx”)?前者返回一个Element(Node),然后再次调用getElementById – hguser

2

你在你的代码中的错误,它忽略了一个 'e':

document.getElementById('con').appendChild(a);