如果把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
提交
取消