電子書籍の厳選無料作品が豊富!

こんばんは。
質問させてください。

画面から文字列を選択して、取得します。(これは出来ました。)
その文字列がHTMLソースファイルの
どの位置のものか取得する方法はありますでしょうか?

○番目の「こんばんは」を画面から取得した時に
同じ文字列があっても、○番目の位置が取得出来る方法なのですが・・・
----
<HTML><HEAD></HEAD>
<BODY>
おはよう、こんばんは。
さようなら、ありがとう。
しつれいしました、おはよう、こんばんは。
こんばんは、さようなら。
さようなら
</BODY>
</HTML>
----

A 回答 (1件)

やりたいことが良くわかっていませんが、


文字列の開始位置を取りたいだけであれば、

splitで切り離した後にそれぞれの文字数と
対象の文字数を足していけば良いだけではないでしょうか?



var text = "おはよう、こんばんは。さようなら、ありがとう。しつれいしました、おはよう、こんばんは。こんばんは、さようなら。さようなら";
var target = "こんばんは";
var index = text.split(target);

var strCount = 0;

for (var i=0; index.length-1 > i; i++) {
alert(index[i].length + strCount);
strCount += target.length;
strCount += index[i].length;
}

■結果の例
5
37
43

この回答への補足

issa_srvさん、ご回答ありがとうざいます。
ちょっとサーバー室に軟禁されておりましてお返事遅れました。
申し訳ないです。

サンプルありがとうございます。
私の方でもサンプルを元に作成してみました。
結果は5,37,42となりました。
(多分、目視で数えると42なので正しいと思っています・・・)
---
function hoge()
{
 var text = "おはよう、こんばんは。さようなら、ありがとう。しつれいしました、おはよう、こんばんは。こんばんは、さようなら。さようなら";
 var target = "こんばんは";
 var index = text.split(target);
 var strCount = 0;
 for (var i=0; index[i].length-1 > i; i++) {
  alert("i=" + i);
  alert(index[i].length + strCount);
  alert(strCount += target.length);
  alert(strCount += index[i].length);
 }
}
---

そして、私の説明が悪かったのですが、
やりたいことは、以下の流れの2)番です。
---
1)ブラウザから文字列を範囲指定する。
2)その範囲指定した文字列のみの文字開始位置を取得。
 例えば、
 ・HTMLソースの一番左上を0バイトとした時、○バイト目等・・・。
 ・BODYタグで囲われた文字列の○バイト目等・・・。
 (文字長は文字列から求められると考えております。)
3)CGI側へ文字列開始位置、文字長を渡し、データとして保存。
4)次回同じ画面を出力する時に保存した開始位置、文字長より、
 Bタグなどで強調表示させたい。
---
目的としましては、4)番目でタグを挿入する位置を特定させたいのです。
開始位置、文字長がわかれば<B>、</B>の挿入位置はわかると思っております。

補足日時:2008/01/14 21:36
    • good
    • 0
この回答へのお礼

選択した文字列の位置の取得方法わかりました。
(issa_srvさんへのお礼の場所ですが申し訳ないです。)
~~~
//選択範囲の取得
Rng = document.selection.createRange();
//BODYタグの全テキスト取得
Pos = document.body.createTextRange();
//Rngの選択範囲の終了位置から開始位置を
//Posの終了位置に設定
Pos.setEndPoint("EndToStart",Rng);
//Posの文字列の長さを求めると
//Rngの開始位置がPosの終了位置になっているので、
//Rngの開始位置がわかる
alert(Pos.text.length);
~~~

参考URL:
http://chaichan.web.infoseek.co.jp/qa4500/qa4552 …

お礼日時:2008/01/17 15:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!