2009-08-21 10 views

答えて

73
var field = 'q'; 
var url = window.location.href; 
if(url.indexOf('?' + field + '=') != -1) 
    return true; 
else if(url.indexOf('&' + field + '=') != -1) 
    return true; 
return false 
+6

複数のリターンパスは個人的な選択である、私は、彼らがクリーンなコードにつながると思うので、彼らは私があれば、ネストされたステートメントを避けるのを助けるために、それらを使用して正確に表示しコードの特定のポイントで何が起こっているのか。 stictの場合は、左辺と右辺の両方が常に数値になるため、厳密な等価演算子に切り替えるとどのような違いがありますか? – LorenVS

+4

クリーナーコードですか? ...全く役に立たない暫定IFステートメントに置くのではなく、単にindexOfテストを返すのはなぜですか? – James

+0

indexOfテストを返すためには、私はそれらを両方とも1行に入れなければならないでしょう。私の考えでは、読むのが難しいでしょう。特にこのコードを検討することはデモンストレーションの目的のためでした – LorenVS

0

私はthis libraryを使用しています。それ以前は、あなたがしていることのかなり良い仕事をしています。具体的に: -

qs.contains(name) 
    Returns true if the querystring has a parameter name, else false. 

    if (qs2.contains("name1")){ alert(qs2.get("name1"));} 
89

また、正規表現を使用できます。

/[?&]q=/.test(location.search) 
+4

これは最も簡単な解決方法です。 –

+0

実際にはそれはもっとよく似ています:if(!new RegExp( "[?&] hfPageToken =")。データ)) // hfPageTokenデータがまだリクエストに存在しない場合 { s.data = s.data? [s.data、tokenParam] .join( "&"):tokenParam; } –

+0

Genius、ありがとうございます。 –

11

プレーンjavascriptのコードサンプル文字通り、あなたの質問に答える:試みる

return location.search.indexOf('q=')>=0; 

プレーンjavascriptのコードサンプルをqパラメータが存在し、値があるかどうかを調べる:

var queryString=location.search; 
var params=queryString.substring(1).split('&'); 
for(var i=0; i<params.length; i++){ 
    var pair=params[i].split('='); 
    if(decodeURIComponent(pair[0])=='q' && pair[1]) 
     return true; 
} 
return false; 
+4

最初の例は、' fooq = bar' – mickadoo

5

1つの以上の変異体が、Gumbosソリューションとほぼ同じ:

var isDebug = function(){ 
    return window.location.href.search("[?&]debug=") != -1; 
}; 
0

これは役立つはず:

function getQueryParams(){ 
    try{ 
     url = window.location.href; 
     query_str = url.substr(url.indexOf('?')+1, url.length-1); 
     r_params = query_str.split('&'); 
     params = {} 
     for(i in r_params){ 
      param = r_params[i].split('='); 
      params[ param[0] ] = param[1]; 
     } 
     return params; 
    } 
    catch(e){ 
     return {}; 
    } 
} 
3

を、この関数のヘルプあなたはJS

function getQuery(q) { 
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; 
} 
1
にURLからパラメータを取得します

試用版

//field "search"; 
var pattern = /[?&]search=/; 
var URL = location.search; 

if(pattern.test(URL)) 
{ 
    alert("Found :)"); 
}else{ 
    alert("Not found!"); 
} 

JSFiddle:URL使用https://jsfiddle.net/codemirror/zj4qyao2/

3

url = new URL(window.location.href); 

if (url.searchParams.get('test')) { 

} 
関連する問題