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

js中endOffset的问题

js中endOffset的问题

炎炎设计 2018-09-19 10:10:58
各位大神好,关于js范围中的endOffset,请先看下面的代码。按照书上讲的,在调用selectNodeContents()时,endOffset等于子节点的数量,而在下面的代码中,子节点应该为<div></div><b></b>,所以数量应该为2,但是为何却弹出的数值为0呢?<!DOCTYPE html><html><head><title>DOM Range Example</title></head><body>     <p id="p1"><div></div><b></b></p>     <script>             var range = document.createRange();            var p1 = document.getElementById("p1");             range.selectNodeContents(p1);             alert(range.endOffset);    </script></body></html>另外,如果把<div></div><b></b>中的<div></div>改为<b></b>结果弹出了2,这又是搞什么鬼呢?在这里先谢谢各位大神了!
查看完整描述

1 回答

?
当年话下

TA贡献1890条经验 获得超9个赞

因为p标签里不能包含块级元素,如果p标签里包含块级元素p标签会先结束自己,然后多解释出一个p。

<p id="p1"><div></div><b></b></p>

会被解释成

<p id="p1"></p><div></div><b></b><p></p>

所以endOffset为0!
您可以使用谷歌浏览器打开页面,按F12就能很直观的看到被浏览器解析之后的DOM树结构


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

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信