2012-04-13 8 views

risposta

125

Modificare questa ...

var string = document.location; 

a questo ...

var string = document.location + ''; 

Questo perché document.location è un Location object. L'impostazione predefinita .toString() restituisce la posizione in formato stringa, quindi la concatenazione lo attiverà.


Si potrebbe anche usare document.URL per ottenere una stringa.

+22

Non sarebbe più pulito chiamare' toString() 'al posto della concatenazione hacky? – kapa

+1

@ bažmegakapa: Sì, è una questione di preferenza. Il '+ ''' è un trucco piuttosto comune per la coercizione delle stringhe, ma alcune persone preferiscono il metodo 'toString()'. Non lo considererei più hacky di quanto non usi l'unario '+' per la conversione del numero. –

+2

Questo è altrettanto brutto. Esiste 'parseInt()' e 'parseFloat()'. C'è anche 'Numero()'. Il '+' è più breve, naturalmente, ma meno leggibile per chi non è abituato al codice hacky o ha meno esperienza. – kapa

39

forse

string = document.location.href; 
arrayOfStrings = string.toString().split('/'); 

supponendo che si desidera l'URL corrente

2

document.location non è una stringa.

Probabilmente vorrete usare document.location.href o document.location.pathname invece.

+0

lol. 4 risposte (almeno) allo stesso tempo. Non dovrei guardare le ultime domande su SO :) –

6

periodo questo

// you'll see that it prints Object 
console.log(typeof document.location); 

desideri document.location.toString() o document.location.href

+0

Grazie. Non mi ero reso conto di aver convertito la mia var da una stringa all'altra. La tua soluzione mi ha dato l'idea di controllare il mio codice. – sg552