我有類似HTML代碼中抵消這一個:入門字符嵌套HTML標籤
<pre>
words words words
words <span> words mystery words</span>
words words words
</pre>
我想用得到的字符與尊重的「謎」偏移到預標籤Javascript(native或MooTools)。我可以使用anchorNode屬性獲取範圍標記,但我無法找到相對於前標記獲取它的方法。
我有類似HTML代碼中抵消這一個:入門字符嵌套HTML標籤
<pre>
words words words
words <span> words mystery words</span>
words words words
</pre>
我想用得到的字符與尊重的「謎」偏移到預標籤Javascript(native或MooTools)。我可以使用anchorNode屬性獲取範圍標記,但我無法找到相對於前標記獲取它的方法。
你可以使用一個DOM Range
做到這一點:
function getCharOffsetRelativeTo(container, node, offset) {
var range = document.createRange();
range.selectNodeContents(container);
range.setEnd(node, offset);
return range.toString().length;
}
例子:
var sel = window.getSelection();
var pre = document.getElementById("your_pre_id");
var offset = getCharOffsetRelativeTo(pre, sel.anchorNode, sel.anchorOffset);
注意事項:
<script>
或<style>
標籤和不可見元素(例如,由CSS display: none
隱藏)中的字符進行計數。迄今爲止看起來不錯,謝謝。 – sslepian 2011-04-01 19:04:26
請幫我用https://jsfiddle.net/,請我卡住了 – ShibinRagh 2017-03-14 05:47:49
你可以編寫一個方法來計算它使用遞歸解決方案...獲得字符偏移爲神祕,然後得到跨度的父節點,並獲得跨度的偏移量開始...重複,直到所需的標籤被找到(前),或者直到你用完的標籤
''標籤在那裏。他們算作角色嗎? – BoltClock 2011-03-31 23:54:11
他們不應該被計算在內。 – sslepian 2011-03-31 23:58:53