javascript - js中endOffset的问题
本文介绍了javascript - js中endOffset的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
各位大神好,关于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,这又是搞什么鬼呢?
在这里先谢谢各位大神了!
解决方案
因为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树结构。
这篇关于javascript - js中endOffset的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文