如何获取父元素中元素的文本索引

时间:2013-06-11 17:48:27

标签: javascript html string text offset

假设我有以下html:

<div>
     <p>Vivamus sagittis lacus vel augue laoreet rutrum faucibus dolor auctor.</p>
     <p>Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus sagittis lacus vel augue laoreet rutrum <i>faucibus</i> dolor auctor.</p>
</div>

看到被埋葬的<i>?我希望得到与父<div>相关的文本偏移量,包括所有<p>标记和空格,但不包括父<div>。在此示例中,文本偏移量为225-ish。

这是用javascript做的吗?

编辑:好的一点背景。我将完整的html保存为数据库中的字符串,因此我知道确切的内容。我也可以访问实际的<i> dom元素。现在我需要将该dom元素与其文本偏移量匹配。

2 个答案:

答案 0 :(得分:2)

性能方面

我会推荐纯粹的方式。 JSPerf: See it by yourself


Pure Javascript

var div = document.getElementsByTagName('div')[0];
/* The index */
alert(div.innerHTML.lastIndexOf('<i>'));
/*The remaining HTML of the div*/
alert(div.innerHTML.substring(div.innerHTML.lastIndexOf('<i>'),div.innerHTML.length));

替代

document.getElemendById('myFirstItalicText');

jQuery

alert($('div').html().indexOf('<i>'));

Alternative

在您的id元素中添加class<i>,以便轻松找到它们。

$('#myFirstItalicText').css('background-color','red');

答案 1 :(得分:0)

我认为根据您的要求,答案是

浏览器仅提供元素的HTML作为方便,而不是替代DOM API。可靠地检索和操作元素的唯一方法是通过DOM。

您应该只将HTML视为DOM中元素的元数据