JavaScript--DOM--nodeType 属性

4.4.2 nodeType 属性

根据gallery.html 文件的结构,body 元素应该只有3个子元素:一 个h1 元素、一个ul 元素和一个img 元素。可 是,countBodyChildren() 函数给出来的数字却远大于此,这是因为 文档树的节点类型并非只有元素节点一种

由childNodes 属性返回的数组包含所有类型的节点,而不仅仅是元素 节点。事实上,文档里几乎每一样东西都是一个节点,甚至连空格和换行符都会被解释为节点,而它们也全都包含在childNodes 属性所返回的数组当中

因此,countBodyChildren 的返回结果才会这么大

还好,每一个节点都有nodeType 属性。这个属性可以让我们知道自己 正在与哪一种节点打交道,差劲的一点是 nodeType 的值并不是英文。

用下面的语法获取节点的nodeType 属性:

node.nodeType

nodeType 的值是一个数字而不是像“element”或“attribute”那样的英文字符串。

为了验证这一点,把countBodyChildren 中的alert 语句替换为下面 这条语句,这样一来,我们就可以知道body_element 元素的 nodeType 属性了:

alert(body_element.nodeType);

在Web浏览器里刷新gallery.html 文件,将看到一个显示数字“1”的 alert 对话框。换句话说,元素节点的nodeType 属性值是1。

nodeType 属性总共有12种可取值,但其中仅有3种具有实用价值

  • 元素节点 的nodeType 属性值是1
  • 属性节点 的nodeType 属性值是2
  • 文本节点 的nodeType 属性值是3

这就意味着,可以让函数只对特定类型的节点进行处理。例如,完全可 以编写出一个只处理元素节点的函数。






参考目录

绝大多数内容来自于:JavaScript DOM编程艺术 (第2版) 作者:作者:[英] Jeremy Keith [加] Jeffrey Sambells 著 译者:杨涛 王建桥 杨晓云 等(第 3 章 DOM)

你可能感兴趣的:(JavaScript,Dom,javascript,css)