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

すみません、質問したいと思います。
自身のURLを参照して、それを変数に格納し、その文字列中にある
#の位置をindex.Ofで解釈したいと思います。
なので、以下のようなjavaScriptを書いたのですが、うまくいきません。
なぜでしょう、よければ教えてください。

<script language=javascript>
var loc = this.window.location;
var sharp_pos = loc.indexOf("#");//#がなければ-1を返す
document.write(loc);
</script>

以上のものを実行したら、URL中の#の位置がブラウザ上で数字で
確認できると思ってたのですが・・・。
javascriptって、変数に格納した文字列は解釈できないのでしたっけ?
perlだったら出来てたような気がしますが・・。

本を見たら、直接文字列をいじっているサンプルしかありませんでした。
 "abcde".indexOf("c"); ⇒2を返す

よろしくお願いします。

A 回答 (2件)

Locationプロパティがうまく参照されていない可能性があるのではないでしょうか。



var loc = this.window.location;

これを

var loc = this.window.location.href;

に直してみては、いかがでしょうか。

「loc.indexOf("#")」については、問題はないと思います。 JavaScriptでも、indexOf()で変数内の文字列を検索することは可能ですよ。

見当違いでしたら、ごめんなさい。

この回答への補足

回答ありがとうございます。
確認してみたところ、うまくいきました。
ついでに不思議な状況が確認できました。

var pos1 = this.window.location;
var pos2 = this.window.location.href;
alert(pos1); //⇒正常に動作
alert(pos2); //⇒正常に動作
なのに、
var sharp_pos1 = pos1.indexOf("#");
var sharp_pos2 = pos2.indexOf("#");
alert(sharp_pos1); //⇒アラートダイアログ表示されず
alert(sharp_pos2); //⇒正常に適切な数値が表示

以上のような感じです。
よくわからないですがなんだかとにかくちゃんと動いてくれたので、
良しとしたいと思います。

すごく助かりました、ありがとうございました!

補足日時:2003/07/25 08:35
    • good
    • 0

> document.write(loc);



document.write(sharp_pos);
の間違いだった、
というオチじゃないですよね?!

うまくいかないでどうなったかを書くようにすると、
回答が貰いやすいと思いますよ。

この回答への補足

回答ありがとうございます。

>document.write(sharp_pos);
>の間違いだった、
>というオチじゃないですよね?!

うわ、最悪の質問をしてしまいましたね。すみません。

実際には、#の位置を返すように
document.write(sharp_pos);
を実行していますが、うまくいかないんです。
直前のlocation参照はうまくいきます。
ためしに、document.write(loc); としたら、
正常に動いてました。

document.write(sharp_pos);
でのみ、何も返さないようです。

補足日時:2003/07/25 02:55
    • good
    • 0

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