輸出第一個元素的前一個元素,沒有提示?
<script type="text/javascript">
? ?
? ? function get_previousSibling(n){
? ? ? ? var y=n.previousSibling;
? ? ? ? document.write(y.nodeType);
? ? ? ? while (y && y.nodeType!=1){
? ? ? ? ? ? y=y.previousSibling;
? ? ? ? ? ? document.write(y.nodeType);
? ? ? ? }
? ? ? ? return y;
? ? }
? ? var x=document.getElementsByTagName("li")[0];
? ? //document.write(x.nodeName);
? ? //document.write(" = ");
? ? //document.write(x.innerHTML);
? ??
? ? var y=get_previousSibling(x);
? ??
? ? if(y!=null){
? ? ? ? document.write("<br />nextsibling: ");
? ? ? ? document.write(y.nodeName);
? ? ? ? document.write(" = ");
? ? ? ? document.write(y.innerHTML);
? ? }else{
? ? ? document.write("<br>已經是第一個節點");? ? ??
? ? }
</script>
為啥沒執行“這是第一個元素”的輸出?
2018-06-27
function get_previousSibling(n){
? ? ? ? var y=n.previousSibling;//這里獲取是前面的空格
? ? ? ? document.write(y.nodeType);//所以這個會打印一個3
? ? ? ? while (y && y.nodeType!=1){
? ? ? ? ? ? y=y.previousSibling;//在獲取空格前邊的節點,已經沒有了,會返回null
? ? ? ? ? ? document.write(y.nodeType);//所以這里便是null,已經不是節點了? 所以不存在節點類型的,
? ? ? ? }
? ? ? ? return y;//等于y是null? 所以下邊結果是已經是第一個節點了
? ? }
2018-05-22
console.log(y);??沒看懂呢
但是我發現:我加的這?? document.write(y.nodeType);??一行打印y類型的語句,沒有運行;另外把這句注釋里就正常了哎,什么情況呢?
2018-05-22
報錯了?
如果你的li前面已經沒有元素了,應該會報錯才對。第一個li的previousSibling是#text,#text的previousSibling是null,null.nodeType自然就報錯了。
知道問題原因了,解決辦法就自己想想吧~