2015-04-24 2 views
0

Я использую подход Tree walker, чтобы получить node Список document. Мой источник, как следующее:Как получить начальное смещение строки внутри текстового узла?

var treeWalker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT); 
//treeWalker.currentNode = [set the starting node]; 
while (treeWalker.nextNode()){ 
    var presentNode = treeWalker.currentNode; 
    if(presentNode.nodeType === 3 && presentNode.nodeValue.replace(/^\s+|\s+$/g, '')){ 
     //Getting here present node value.  
    } 
} 

Пусть presentNode Значение Я новичок в JavaScript. Мне нужно смещение начала и смещение конца новичок строка. Как я могу получить эти значения в javascript? Кто-нибудь может поддержать меня?

ответ

1

Вы можете использовать indexOf и length:

var positionOfNovice = "I am novice in javascript.".indexOf('novice'); 
 
var novicePos = { 
 
    start: positionOfNovice, 
 
    end: positionOfNovice + 'novice'.length 
 
}; 
 

 

 
var result = document.querySelector('#result'); 
 
result.innerHTML = 
 
    'String: "I am novice in javascript."\n\nPosition of "novice": \n' + 
 
    JSON.stringify(novicePos, null, ' '); 
 

 
// more generic: create a String extension: 
 
String.prototype.getWord = getWord; 
 

 
result.innerHTML += 
 
    '\n\nUsing extension:\n' + 
 
    JSON.stringify("I am novice in javascript.".getWord('novice'), null, ' '); 
 

 
function getWord(word) { 
 
    var pos = this.indexOf(word); 
 
    return { 
 
     string: this, 
 
     word: word + (pos < 0 ? ' NOT FOUND' : ''), 
 
     startPosition: pos > -1 ? pos : null, 
 
     endPosition: pos > -1 ? pos + word.length : null 
 
    } 
 
}
<pre id="result"></pre>

Смежные вопросы