previousSibling返回值問(wèn)題
把第一段返回節(jié)點(diǎn)之后的節(jié)點(diǎn)的代碼var x=document.getElementsByTagName("li")[0]; ?中的[0]改為[5],則打印出“已是最后一行,”和“已是第一行”。但把第二段返回節(jié)點(diǎn)之前的代碼var h=document.getElementsByTagName("li")[5]; 中的[5]改為[0]則不會(huì)提示,而是返回值有些改變。不知是為什么?
2016-03-13
不太明白你說(shuō)的意思。
var x=document.getElementsByTagName("li")[0];找出第一個(gè)li,改成(5)則找第6個(gè)li。
你說(shuō)的打印’已是最后一行‘和’已是第一行‘,具體代碼什么。
首先,得看下你做的例子,一般來(lái)說(shuō),數(shù)據(jù)組的下標(biāo)值不能超過(guò)li的個(gè)數(shù),如果超過(guò),則返回null;
比如<li>1</li><li>2</li>,如果document.getElementsByTagName("li")[下標(biāo)];如果小標(biāo)大于等于2,則返回值為空。
具體你可以看看previousSibling和nextSibling的用法
2016-03-13
給你看下源代碼就明白了。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>nextSibling</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;
? ? }
? ??
? ? function get_previousSibling(p){
? ? ? ? var h = p.previousSibling;
? ? ? ? while(h && h.nodeType!=1){
? ? ? ? ? ? h = h.previousSibling;
? ? ? ? }
? ? ? ? return h;
? ? }
? ??
? ? 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>已經(jīng)是最后一個(gè)節(jié)點(diǎn)"); ? ? ?
? ? }
? ??
? ? var h = document.getElementsByTagName("li")[5];
? ? document.write("<br />" + "<br />" + h.nodeName);
? ? document.write(" = ");
? ? document.write(h.innerHTML);
? ??
? ? var i = get_previousSibling(h);
? ??
? ? if (y!=null){
? ? ? ? document.write("<br />previousSibling:");
? ? ? ? document.write(i.nodeName);
? ? ? ? document.write("=");
? ? ? ? document.write(i.innerHTML);
? ? ? ? }else{
? ? ? ? ? ? document.write("<br />已經(jīng)是第一個(gè)節(jié)點(diǎn)");
? ? ? ? }
</script>
</body>
</html>