- ベストアンサー
変数に入れた文字列をindexOfで解釈したい
すみません、質問したいと思います。 自身の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を返す よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
Locationプロパティがうまく参照されていない可能性があるのではないでしょうか。 var loc = this.window.location; これを var loc = this.window.location.href; に直してみては、いかがでしょうか。 「loc.indexOf("#")」については、問題はないと思います。 JavaScriptでも、indexOf()で変数内の文字列を検索することは可能ですよ。 見当違いでしたら、ごめんなさい。
その他の回答 (1)
- s_doc
- ベストアンサー率24% (93/377)
> document.write(loc); document.write(sharp_pos); の間違いだった、 というオチじゃないですよね?! うまくいかないでどうなったかを書くようにすると、 回答が貰いやすいと思いますよ。
補足
回答ありがとうございます。 >document.write(sharp_pos); >の間違いだった、 >というオチじゃないですよね?! うわ、最悪の質問をしてしまいましたね。すみません。 実際には、#の位置を返すように document.write(sharp_pos); を実行していますが、うまくいかないんです。 直前のlocation参照はうまくいきます。 ためしに、document.write(loc); としたら、 正常に動いてました。 document.write(sharp_pos); でのみ、何も返さないようです。
補足
回答ありがとうございます。 確認してみたところ、うまくいきました。 ついでに不思議な状況が確認できました。 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); //⇒正常に適切な数値が表示 以上のような感じです。 よくわからないですがなんだかとにかくちゃんと動いてくれたので、 良しとしたいと思います。 すごく助かりました、ありがとうございました!