1

假设我有以下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>吗?我想获得它相对于 parent 的文本偏移量<div>,包括所有<p>标签和空格,但不包括 parent <div>。在此示例中,文本偏移量将是 225-ish。

这对javascript可行吗?

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

4

2 回答 2

2

性能方面

我会推荐纯粹的方式。 JSPerf:自己看


纯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>'));

选择

向您的元素添加一个id或一个以轻松找到它们。class<i>

$('#myFirstItalicText').css('background-color','red');
于 2013-06-11T17:54:05.040 回答
0

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

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

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

于 2013-06-11T17:54:27.113 回答