2009-08-21 5 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

Несколько возвратные пути личный выбор, я использую их, потому что я думаю, что они ведут к более чистому коду, так как они помогают мне избежать вложенных если заявления и показать точно что происходит в определенной точке кода. Что касается жестких футляров, то как левая, так и правая стороны всегда будут числами, и какая разница будет переходить на строгие операторы равенства? – LorenVS

+4

Уборщик? ... Почему бы просто не вернуть тест indexOf вместо того, чтобы помещать его в абсолютно бесполезный предварительный оператор IF. – James

+0

Поскольку для возврата теста indexOf мне пришлось бы поместить их в одну строку, что, на мой взгляд, было бы труднее прочитать. Особенно учитывая этот код для демонстрации – 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 ="). Test (s.данные)) // если данные hfPageToken еще не присутствуют в запросе { s.data = s.data? [s.data, tokenParam] .join ("&"): tokenParam; } –

+0

Гений, спасибо. –

11

равнину Javascript код образца, который отвечает на ваш вопрос буквально:

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

равнину яваскрипта образец кода, который пытается найти, существует ли параметр 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

Первый пример вернет true для' fooq = bar' – mickadoo

5

еще один вариант, но почти такой же, как 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

эту функцию поможет вам получить параметр из URL в JS

function getQuery(q) { 
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; 
} 
3

Использование URL:

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

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

} 
Смежные вопросы