2013-04-05 81 views
1

我正在使用android webview并实现一些我需要整合javascript的功能。我是javascript新手,请告诉我如何获取段落ID(每个段落的ID都在选择中)。在更多的细节:如何获取所选段落的ID?

像我有数据 -

<p id="01">hhh dhghdg 
    <span id="1.1">dada</span> 
    <span id="1.2">dgsdd</span> 
</p> 
    <p id="02">dsdgs dhgd hdhd 
<span id="2.1">dada</span> 
    <span id="2.2">dgsdd</span> 
</p> 

所以,你选择一些数据,即“dhghdg dsdgs HHH”这样,这个数据属于多个段落p1和p2,所以我希望得到的ID这两段使用javascript。

请告诉我如何得到它。

+0

是你如何来调用这些问题元素使用JavaScript?或者您想要查找所选文本属于哪个ID。你能清楚一点吗? – harishannam 2013-04-05 09:47:27

+0

想要找到所选文本属于哪个ID,意味着所有ID – Ravi 2013-04-05 09:50:26

+0

你可以看看这里http://jsfiddle.net/KC48j/11/ – 2013-04-05 09:53:13

回答

1

PPK有很详细的帖子: http://www.quirksmode.org/dom/range_intro.html

能描述范围的对象。我没有这样做过,但通过对事物的外观,你需要使用:

window.getSelection() 

它应该会返回一个选择对象,从中可以获取一系列的对象将包含所有选择的元素(如在上面的链接)

描述从扫描的MDN文档: https://developer.mozilla.org/en-US/docs/DOM/window.getSelection

你会得到一个HTML字符串返回从中,你可以尝试从获得所有的ID,使用正则表达式,像这个:

var underSelection = window.getSelection().getRangeAt(0); 
var idsRegEx = /#\s(id|class)="[^"]+"/; 
var idMatches = idsRegEx.match(underSelection); 
//then clean and do something with the ids 

我还没有测试任何这个,但我希望它能让你开始。

编辑:附加信息 如果你使用jQuery,你也许可以选择加载到jQuery对象,并让所有的IDS出来做:

var IDs = []; 
$(underSelection).find("p").each(function(){ IDs.push(this.id); }); 
+0

idsRegEx.match(selection);这里的选择是什么? – Ravi 2013-04-05 10:08:56

+0

啊对不起,这应该阅读下选择(我现在编辑它) – Lewis 2013-04-05 10:14:48

+0

让我试试,我会接受它,希望它会为我工作 – Ravi 2013-04-05 10:24:56

0

您可以选择使用

document.documentElement.id 

document.getElementsByTagName('HTML')[0].id