为了账号安全,请及时绑定邮箱和手机立即绑定

为什么获取到的最后一个子元素是undefined?

为什么获取到的最后一个子元素是undefined?

宝慕林4294392 2018-10-19 14:13:29
如果把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>


查看完整回答
反对 回复 2018-11-07
  • 1 回答
  • 0 关注
  • 569 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号