如果把lastChild去掉的话可以弹出整个祖父的内容 也可以看到小明的那个就是最后一个子元素 但是为什么加上lastChild后就是undefined的了?我就是想获取小明的那一个节点<html><head><meta charset="utf-8"><style>   .sp1{width:50px;height:50px;}</style><script type="text/javascript">    window.onload=function(){       var oSp1=document.getElementsByClassName("sp1");       for(var i=0;i<oSp1.length;i++){          oSp1[i].onclick=function(){            alert(this.parentNode.parentNode.lastChild.innerHTML);          }       }    }</script></head><body><div class="div1">  <span>      <span></span><span></span><span></span>      <span>         <span></span><span class="sp1">获取</span>      </span>      <span>小明</span>  </span></div></body></html>
                    
                    
                1 回答
 
                    
                    
                            喵喵时光机
                            
                                
                            
                        
                        
                                                
                    TA贡献1846条经验 获得超7个赞
在js中,换行符、空格这些也是文本节点。lastChild在这里获取的是就是换行符,所以是undefined
- 可以改用lastElementChild。 
    var oSp1=document.getElementsByClassName("sp1");       for(var i=0;i<oSp1.length;i++){
          oSp1[i].onclick=function(){            console.log(this.parentNode.parentNode.lastElementChild.innerHTML);
          }
       }lastElementChild获取的永远是元素节点
- 当然你也可以用原来的lastChild。改一下html就行了(去掉换行符) 
<div class="div1"> <span> <span></span><span></span><span></span> <span> <span></span><span class="sp1">获取</span> </span> <span>小明</span></span> </div>
添加回答
举报
0/150
	提交
		取消
	