<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <body> <ul id="u1"> <li id="a">javascript</li> <li id="b">jquery</li> <li id="c">html</li> </ul> <ul id="u2"> <li id="d">css3</li> <li id="e">php</li> <li id="f">java</li> </ul> <script type="text/javascript"> function get_nextSibling(n) { var x=n.nextSibling; while (x && x.nodeType!=1) { x=x.nextSibling; } return x; } var x=document.getElementsByTagName('li')[0]; document.write(x.nodeName); document.write(' = '); document.write(x.innerHTML); var y=get_nextSibling(x); if (y!=null) { document.write('<br />nextSibling:'); document.write(y.nodeName); document.write(' = '); document.write(y.innerHTML); } else { document.write('<br />已经是最后一个节点'); } //get_previousSibling function get_previousSibling(n) { var m=n.previousSibling; while (m && m.nodeType!=1) { m=m.previousSibling; } return m } var m=document.getElementById('b'); document.write('<br />'+m.nodeName); document.write(' = '); document.write(m.innerHTML); var h=get_previousSibling(m); if (h!=null) { document.write('<br />previousSibling:'); document.write(h.nodeName); document.write(' = '); document.write(h.innerHTML); } else { document.write('<br />已经是最前的一个节点'); } </script> </body> </html>
nodetype跟nodeType有什么不同吗?
在这代码中,如果把nodeType改成nodetype,运行结果就不一样了。
麻烦高手解答!
nodeType和nodetype是两个不同的东西(js是区分大小写的)。所以结果不一样。
具体原因:因为有文本节点,所以求下一(上一)元素节点需要排除文本节点,所以需要判断是不是元素节点(nodeType是不是不等于1),因为nodetype没有这个属性,所以while循环会一直进行,不会停止。结果自然不一样。