javascript - js中endOffset的问题
大家讲道理
大家讲道理 2017-04-11 12:26:44
0
1
704

各位大神好,关于js范围中的endOffset,请先看下面的代码。
按照书上讲的,在调用selectNodeContents()时,endOffset等于子节点的数量,而在下面的代码中,子节点应该为<p></p><b></b>,所以数量应该为2,但是为何却弹出的数值为0呢?

<!DOCTYPE html>
<html>
<head>
<title>DOM Range Example</title>
</head>
<body>
    <p id="p1"><p></p><b></b></p>
    <script>
            var range = document.createRange();
            var p1 = document.getElementById("p1");
            range.selectNodeContents(p1);
            alert(range.endOffset);
    </script>
</body>
</html>

另外,如果把<p></p><b></b>中的<p></p>改为<b></b>结果弹出了2,这又是搞什么鬼呢?

在这里先谢谢各位大神了!

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(1)
黄舟

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

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

会被解释成

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板