2010-09-05 6 views
1

Je pensais que c'était trivial mais n'a pas pu le résoudre sur :(chaîne de remplacement dans l'URL avec le javascript

Je souhaite modifier une URL passé dans param mu avec javascript.

var fullurl = window.location; 
//do dome stuff to find var url. 
fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc'); 

Fondamentalement, il est une url comme:. http://example.com/article/ ou http://example.com/article/sort:author/direction:asc

I le premier cas, je ne veux rien à changer dans la seconde je veux remplacer le sort: avec sort:url

.

le code ci-dessus ne semble pas faire quoi que ce soit. Je pense que le problème est que l'expression rationnelle n'est pas analysée, et il renvoie un URL avec .* et \/ à l'intérieur

toute aide? merci

Répondre

1

window.location est un objet contenant les propriétés suivantes:

.hash 
.host 
.hostname 
.href 
.pathname 
.port 
.protocol 
.search 

Vous voulez probablement analyser la chaîne href. J'ai fait un test préliminaire où j'ai écrasé l'attente d'url et le remplacement a fonctionné excepté que vous n'indiquez pas ce que url est. Sinon, essayez ce qui suit dans une console:

x = window.location.href 
url = "SomeValue" 
y = x.replace(/sort:.*\/direction:.*/g, 'sort:' + url + '/direction:asc') 

vous devriez obtenir le résultat que vous attendez en supposant que vous y inspectez et non x, car une opération de remplacement renvoie un résultat et ne change pas l'objet lui-même.

1

window.location n'est pas une chaîne, c'est un objet spécial qui convertit implicitement en une chaîne. En outre, string.replace renvoie la nouvelle valeur, elle ne modifie pas la chaîne d'origine. Essayez quelque chose comme ceci:

var fullurl = window.location.toString(); 
//do dome stuff to find var url. 
window.location = fullurl.replace(/sort:.*\/direction:.*/g,'sort:' + url + '/direction:asc'); 
Questions connexes