关于nextsibling的信息

http://www.itjxue.com  2023-01-07 16:06  来源:未知  点击次数: 

普通树变二叉树如何变?

树的左子结点作为二叉树的左子树结点,兄弟结点作为二叉树的右子节点。普通树变二叉树的转换过程:

在这个图里边,2是根结点的左子树结点,与2并列的3、4是2的兄弟结点,故转换成二叉树时,作为2的右子节点,类似的,5是3的左子树结点,故也是二叉树里3的左结点,6、7与5并列,就作为5的右子节点,类似的,4号结点也是一样。

分析查找二叉树的一些递归条件:

查找树的左、右子树各是一颗查找树。这个很明了,无可厚非。

若查找树的左子树非空,则其左子树上的各节点均小于根结点的值。如图:2和4都小于5。

若查找树的右子树非空,则其右子树上的各节点值均大于根节点的值。如图:6和8都大于5。

怎样获取一个元素节点后面的元素节点

可以使用

.nextSibling

或者

.nextElementSibling。

nextSibling

属性是获取节点后面的节点(可能是文本节点,可以是元素节点,也可以是注释节点等等)

nextElementSibling

是获取节点后面的第一个元素节点

举个例子:

我是第一个节点

我是文本

我是SPAN

document.getElementById(

'first'

).nextSibling

//

获取到

TextNode

我是文本

document.getElementById(

'first'

).nextElementSibling

//

获取到

SPAN

如何获取元素下的第一个子元素

Element.firstChild ?,是的,这是第一种方法,当然,通常来说支持 W3C 规范的浏览器,如 Firefox 等取到的应该是 TEXT_NODE 。很早之前,或者说现在最流行的方法可能是:

// 让我们假设要将它抽象出来,变成一个 util 对象的方法

var util = {};

util.first = function(element) {

if(!element) return;

var first= element.firstChild;

// 处理 w3c 浏览器中第一个子元素是 TEXT_NODE

// 并且需要考虑到有没有 COMMENT_NODE 的情况

while(first first.nodeType !==1) first = first.nextSibling;

return first;

}

现在浏览器支持一个叫 Element.firstElementChild 的属性,可以获取到第一个为元素的子节点。那么,我们的 API 可以变得更简单:

util.first = function(element) {

if(!element) return;

// 刚好 IE8 以下支持直接拿 firstChild

return element[element.firstElementChild ? 'firstElementChild' : 'firstChild'];

}

另外的两个实现方法:

// 通过 HTML5 的 querySelector,及 getElementsByTagName

util.first = function(element, tag) {

if(!element) return;

tag = tag || '*';;

return element.querySelector ? element.querySelector(tag) : element.getElementsByTagName(tag)[0];

}

// IE6 也支持的 children

util.first = function(element) {

return element element.children[0];

}

(责任编辑:IT教学网)

更多

推荐金山WPS文章