2013-04-05 80 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