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

Javascript 如何获取父元素中元素的文本索引,javascript,html,string,text,offset,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 augu

假设我有以下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>

在奥古斯·劳里特·鲁图姆·福西布斯·多洛尔·奥克托的带领下,人马过着幸福的生活

在自然社会中,因怀孕而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯,因饥饿而死亡的蒙特斯。在奥古斯·劳里特·鲁图姆·福西布斯·多洛尔·奥克托的带领下,人马过着幸福的生活

请参阅隐藏的
?我想得到它相对于父对象的文本偏移量,包括所有的标签和空格,但不包括父对象。在本例中,文本偏移量为225英寸

这在javascript中可行吗

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

性能方面 我会用纯正的方式。




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

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


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

使用JavaScription,一切都是可行的。您可能会得到一些东西,但这些东西在多个浏览器中是不可靠的。任何直接使用HTML的东西都是不一致的,因为浏览器不使用HTML思考:他们将HTML转换为DOM。特别是对于空格,当转换回HTML时,精确的输出会有所不同。抓取div对象,对内容使用
innerHTML
,并使用
indexOf(“”)
查找所需部分的索引(+3)如果有多个
标记具有相同的内容,会发生什么?好的,我已经考虑使用
indexOf()
方法,但是,我担心可能有多个
标记,并且它们可能具有相同的内容。@TylerJohnson然后只需创建一个值为0的临时变量,该变量将存储找到的最新索引,并在循环中确保新索引高于该变量。但是,如果它们都是相同的,我如何知道第n个元素是我想要的呢相同?您可能希望获取
indexOf(“”)
indexOf()
之间的子字符串,并检查内容是否是您想要的。否则,您可能需要向这些添加id或类。如果您使用
id
,那么我想您将完全不需要查找索引。请参阅下面的注释。我不想使用
indexOf()。你真的不能在浏览器中使用那样的HTML。
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');
alert($('div').html().indexOf('<i>'));
$('#myFirstItalicText').css('background-color','red');