Hier ist meine Lösung. Wie von Andy E empfohlen, während er diese Frage beantwortete, ist es nicht gut für die Leistung Ihres Skripts, wenn es wiederholt verschiedene Regex-Strings erstellt, Schleifen durchläuft usw., nur um einen einzelnen Wert zu erhalten. Daher habe ich ein einfacheres Skript entwickelt, das alle GET-Parameter in einem einzigen Objekt zurückgibt. Sie sollten es nur einmal aufrufen, das Ergebnis einer Variablen zuweisen und dann zu einem beliebigen Zeitpunkt in der Zukunft jeden gewünschten Wert aus dieser Variablen mit dem entsprechenden Schlüssel abrufen. Beachten Sie, dass es auch die URI-Dekodierung übernimmt (d. h. Dinge wie %20) und das + durch ein Leerzeichen ersetzt:
function getUrlQueryParams(url) {
var queryString = url.split("?")[1];
var keyValuePairs = queryString.split("&");
var keyValue = [];
var queryParams = {};
keyValuePairs.forEach(function(pair) {
keyValue = pair.split("=");
queryParams[keyValue[0]] = decodeURIComponent(keyValue[1]).replace(/\+/g, " ");
});
return queryParams;
}
Hier sind ein paar Tests des Skripts für Sie zum Ansehen:
// Query-Parameter nur mit Zeichenfolgen, keine Sonderzeichen.
var currentParams = getUrlQueryParams("example.com/foo?number=zero");
alert(currentParams["number"]); // Gibt "zero" aus.
// Für die von Ihnen angegebene URL...
var someParams = getUrlQueryParams("www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 ");
alert(someParams["c"]); // Gibt "m2-m3-m4-m5" aus.
// Für einen Abfrageparameter mit URI-Codierung...
var someParams = getUrlQueryParams("www.example.com/t.html?phrase=a%20long%20shot&location=Silicon+Valley%2C+USA");
alert(someParams["phrase"]); // Gibt "a long shot" aus.
alert(someParams["location"]); // Gibt "Silicon Valley, USA" aus.
9 Stimmen
Bevor Sie eine neue Antwort posten, bedenken Sie bitte, dass es bereits 50+ Antworten auf diese Frage gibt. Stellen Sie bitte sicher, dass Ihre Antwort Informationen enthält, die nicht unter den vorhandenen Antworten zu finden sind.
0 Stimmen
Var url_string = "example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; //window.location.href var url = new URL(url_string); var c = url.searchParams.get("c"); console.log(c);
1 Stimmen
Es ist verrückt, dass eine, was sollte sein, einfache Frage für JS 50+ Antworten erfordert :/