Просто используйте два раскола:
function get(n) {
var half = location.search.split(n + '=')[1];
return half !== undefined ? decodeURIComponent(half.split('&')[0]) : null;
}
Я читал все предыдущие и более полные ответы. Но я думаю, что это самый простой и быстрый метод. Вы можете проверить этот тест jsPerf
. Чтобы решить проблему в комментарии Rup, добавьте условное разделение, изменив первую строку на две ниже. Но абсолютная точность означает, что он теперь медленнее, чем regexp (см. jsPerf ).
function get(n) {
var half = location.search.split('&' + n + '=')[1];
if (!half) half = location.search.split('?' + n + '=')[1];
return half !== undefined ? decodeURIComponent(half.split('&')[0]) : null;
}
Итак, если вы знаете, что не столкнетесь с контр-картой Рупа, это победит. В противном случае regexp.
Или , если у вас есть контроль над запросом и может гарантировать, что значение, которое вы пытаетесь получить, никогда не будет содержать URL-кодированных символов (имеющих эти в значении будет плохой идеей) - вы можете использовать следующую немного упрощенную и читаемую версию 1-го варианта:
blockquote>function getQueryStringValueByName(name) { var queryStringFromStartOfValue = location.search.split(name + '=')[1]; return queryStringFromStartOfValue !== undefined ? queryStringFromStartOfValue.split('&')[0] : null;