• ベストアンサー

javascriptでクエリ文字列を取得できますか?

javascriptでURLの末尾に付与した?以降の文字列、いわゆる"クエリ文字列"を取得する事は出来ますか? 出来る場合、構文を教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
noname#227796
noname#227796
回答No.1

クエリだけ取り出すのは知りませんが、URLから切り出せばいいと思います。 function getQuery() { url = new String(window.location); query = new Array(); query = url.split("?"); if ( !!query[1] ) { return query[1]; } else { return ""; } return query; } こんな感じかな。

godori
質問者

お礼

重ね重ねなるほどです。 簡潔で、他のパターンにも応用できそうです。 ありがとうございました。

godori
質問者

補足

なるほどです。それでやって見ます。 ところで、申し訳ないのですが更に質問させて下さい。 教えて頂いたソースの5行目に if ( !!query[1] ) とありますが、!!とはどういう意味ですか? if (query[1] != "") と同じ意味ですか?

その他の回答 (1)

noname#227796
noname#227796
回答No.2

>if ( !!query[1] ) > >とありますが、!!とはどういう意味ですか? > >if (query[1] != "") > >と同じ意味ですか? 例えば、query[0]しか存在しない状態で if (query[1] != "") などとすると、エラーになります。 これは、存在しないquery[1]を参照しようとしたためです。 そこで、query[1]が存在するかしないか確認する必要があるため、 if (!query[1]) というように「!」付けて、query[1]の存在を否定した文にします。 つまり、これだと「もしquery[1]が存在しなければ」というif文になります。 なので、先の文は if ( !query[1] ) { return ""; } else { return query[1]; } でもよいわけです。 ただ、私の場合「もしquery[1]が存在すれば」というif文したかったのでので、さらにif文の内容を逆転させるために「!」を2つつけて「!!」にしたわけです。 if ( !!query[1] ) は、「もしquery[1]が存在すれば」というif文になります。 実際に、 if ( !!query[1] ) で始まるif文をなくして、単に return query[1]; としてテストしてみて下さい。 クエリを付けた場合は問題ないですが、クエリがない状態で実行させると、エラーになるはずです。

関連するQ&A

専門家に質問してみよう