2016-04-04 7 views
2

検索されたテキストの位置はscrollYです。本文にテキストを見つけて、見つけたテキストの位置をscrollYにする方法。 (すべてがクリアされている)JavaScript:本文上で検索したテキストのスクロール位置を取得

<script> 
    function getScrollYPosition(var str){ 
     /* step 1: search str in <body> and found. 
     * step 2: get scrollY position of found str. 
     * step 3: return position. (500) 
     */ 
    } 
</script> 

<body> 
    <p>Hello world</p> /*For example scrollY position is 500*/ 
    <p>...</p> 
    <p>...</p> 
</body> 
+1

コードを入力してください。コードなしで手助けするのは難しいです! – Gacci

+0

ブラウザで検索したときに強調表示されたテキストの位置を見つける方法や、カスタム検索方法があるかどうかを尋ねることを意味しますか? – ShrekOverflow

+0

ブラウザの検索が好きですが、私はスクロールする必要があります。見つかったテキストの位置 – ATES

答えて

1

あなたが最初のテキスト文字列に一致することができ、
span)要素
と計算ここで位置

オフセット、その要素は簡単な例は、

だよりにそれを包みます

var word = 'dolor'; 
 
var rgx = new RegExp('\\b('+word+')\\b', 'ig'); 
 

 
// CREATE SPAN ELEMENTS WHAT WILL WRAP THE QUERY STRING (WORD) 
 
$('div, div *').contents().filter(function() { 
 
    return this.nodeType === 3; 
 
}).each(function() { 
 
    $(this).replaceWith($(this).text().replace(rgx, "<span class='match'>$1</span>")); 
 
}); 
 

 
// COLLECT ALL SPAN POSITIONS 
 
var positions = $('.match').map(function(){ 
 
    return this.getBoundingClientRect().top; 
 
}).get(); 
 

 
alert(positions);
div{font-size:50px;} 
 
span.match{background: gold;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Aut voluptatum, provident saepe. Culpa animi sint, itaque iure error hic qui blanditiis perspiciatis adipisci, libero quia veritatis dignissimos quasi id cumque!</div> 
 
<div>Magni cupiditate laudantium, corrupti commodi, reiciendis consequuntur recusandae minima tempore id placeat rerum saepe molestiae, nulla illo, dolores distinctio aliquid asperiores esse maxime voluptatibus corporis at. Commodi eius magni esse!</div> 
 
<div>Maiores explicabo, dolor nemo mollitia cumque et nobis quae consectetur alias dicta quod facere saepe aspernatur sint ex soluta nulla veritatis ab. Sunt aspernatur distinctio quam alias quis possimus reiciendis impedit.</div> 
 
<div>Est sequi eius nam, odio ut commodi quam omnis aperiam, vel, sunt quaerat adipisci voluptates natus possimus consequuntur corporis atque facere corrupti, rem autem modi ipsam inventore nobis! Itaque, modi?</div> 
 
<div>Velit, cumque in dicta ratione iste autem, atque dolor magni optio, excepturi qui ipsam laboriosam modi quidem cupiditate sapiente perferendis! Iste eos fuga ut eum deserunt repellendus ex qui, illo eaque!</div> 
 
<div>Ullam a, labore aperiam ex culpa nesciunt ipsam voluptatibus maiores consequatur qui repellendus obcaecati tenetur, consectetur eos, ut voluptate, nemo placeat soluta odit? Error, Dolor, voluptatibus! Id sed alias et consectetur.</div> 
 
<div>Ipsa pariatur tenetur, nobis recusandae deserunt quisquam nesciunt, ex consequuntur minus voluptatem dolores officiis itaque fuga reiciendis dolor praesentium quae maxime repudiandae. Quibusdam sint fugit soluta pariatur, alias, eveniet natus culpa!</div>

+0

例を挙げてください。 – ATES

+0

ここに行く!結果の配列には、目的の単語のすべての位置が表示されます。 –

+0

非常に明確で、すごくありがとうございました。 – ATES

1

あなたは、もう少し具体的なあなたの答えを持つ可能性があり :

次のコードは、問題についての一例です。私が正しく理解していれば、与えられたテキストを含む要素を見つけ、その垂直オフセットを取得する必要があります。あなたは次のことを試みることができる:

$($(":contains(YOUR_TEXT)").slice(-1)[0]).offset().top 
+0

特定のテキストがその要素の最下部に位置していても、何らかのテキストを含む要素の位置を返すようになります... QからOPの欲望はどういうものか分かりません... –

関連する問題