Modifica pathname in capitalize con javascript

PazzoFrontEnd

Utente Attivo
8 Ott 2013
46
0
6
Codice:
  $(document).ready( function() {
     
      capitaliseFirstLetter();

      function capitaliseFirstLetter(){

          var hrefSection = $("a").attr("href");
          var splitHrefSection = hrefSection.split("/");
          var lastPath = splitHrefSection[splitHrefSection.length-1];
        
          var firstLetterSection = lastPath.charAt(0).toUpperCase() + lastPath.slice(1);

         .........
      }
     
  });

Ciao a tutti
ho un attributo href di un'ancora che devo modificare. Ho creato una funzione che mi splitta la stringa (prendendo come elemento "/") e mi crea un array.
Es: http://miosito.it/sezione/sottosezione ---> ['http:', 'miosito.it', 'sezione', 'sottosezione']

Devo prendere sempre l'ultimo elemento dell'array (che corrisponderà sempre all'ultimo elemento del path del mio link) e trasformare SOLO la prima lettera in uppercase. (nel mio esempio: da "sottosezione" a "Sottosezione" con la "S" maiuscola).

L'effetto che desidero è modificare il mio href presente in pagina da "http://miosito.it/sezione/sottosezione" a --> "http://miosito.it/sezione/Sottosezione" e riscriverlo nell'html. Come faccio a sovrascriverlo in questo modo? dovrei riunificare gli elementi splittati con solo l'ultimo modificato e riscrivere l'href...
Grazie, spero di essere stato chiaro nell'esposizione del problema...
buona giornata
 
Ciao, se non ho capito male puoi provare cosi
HTML:
<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
<script type="text/javascript">
    $(document).ready(function() {
        $("a.capitalise").each(function() {
            var split = $(this).attr("href").split("/");
            var last = split.length - 1
            split[last] = split[last].charAt(0).toUpperCase() + split[last].slice(1);
            $(this).attr("href", split.join("/"));
        });
    });
</script>
<a href="http://miosito.it/sezione/sottosezione">link</a>
<a class='capitalise' href="http://miosito.it/sezione/sottosezione1">link 1</a>
<a href="http://miosito.it/sezione/sottosezione2">link 2</a>
verranno modificati solamente i tag <a> con classe "capitalise", in questo modo puoi avere altri link nella pagina senza che vengano modificati
 
mmm..non funziona.
Se riprendo la mia e integro col tuo codice non va:

Codice:
  $(document).ready( function() {
     
      capitaliseFirstLetter();

      function capitaliseFirstLetter(){

          var hrefSection = $("a").attr("href");
          var splitHrefSection = hrefSection.split("/");
          var lastPath = splitHrefSection[splitHrefSection.length-1];
          var firstLetterSection = lastPath.charAt(0).toUpperCase() + lastPath.slice(1);
        
          $("a").attr("href", splitHrefSection.join("/"));

      }
     
  });

il link resta sempre http://miosito.it/sezione/sottosezione e non diventa http://miosito.it/sezione/Sottosezione
 
Il mio se lo provavi cosi com'era funzionava
nel tuo devi sostituire questa riga
Codice:
var firstLetterSection = lastPath.charAt(0).toUpperCase() + lastPath.slice(1);
con questa
Codice:
splitHrefSection[splitHrefSection.length-1] = lastPath.charAt(0).toUpperCase() + lastPath.slice(1);
altrimenti non sovrascrivi l'ultimo elemento dell'array
 
Grazie Criric! funziona alla grande!

Se posso chiederti un'altra info velocissima: tenendo presente lo stesso concetto, come potrei ricostruirmi il link se al posto di "http://miosito.it/sezione/sottosezione/" avessi una situazione simile a "http://miosito.it/sezione/altra sezione/" da trasformare in "http://miosito.it/sezione/Altra-Sezione/" (ossia con "-" tra le due parole e le lettere maiuscole "A" e "S" delle due parole)?

PS ti chiedo questo perchè potrebbe anche capitare che l'"altra sezione" mi sia stampata in pagina e non provenga da un link già presente, per questo dovrei costruirlo.

buona giornata a tutti!
 
Più o meno puoi fare cosi:
splitti l'ultimo elemento del pimo array con lo spazio
Codice:
.split(" ");
se trovi più di un elemento
Codice:
if ( .length > 1)
fai gli uppercase con un ciclo e ricomponi la stringa con il trattino
Codice:
.join("-")
 

Discussioni simili