2012-04-13 32 views

Respuesta

125

Cambie este ...

var string = document.location; 

a esto ...

var string = document.location + ''; 

Esto es porque document.location es un Location object. El valor predeterminado .toString() devuelve la ubicación en forma de cadena, por lo que la concatenación activará eso.


También puede usar document.URL para obtener una cadena.

+22

¿No sería más limpio llamar' toString() 'en lugar de hacky concatenación? – kapa

+1

@ bažmegakapa: Sí, es una cuestión de preferencia. El '+ ''' es un truco bastante común para la coerción de cadenas, pero algunas personas prefieren el método 'toString()'. No lo consideraría más hacky que usar el unario '+' para la conversión de números. –

+2

Eso es igual de feo. Hay 'parseInt()' y 'parseFloat()'. También hay 'Número()'. El '+' es más corto, por supuesto, pero menos legible para alguien que no está acostumbrado al código hacky o menos experimentado. – kapa

39

quizá

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

si quiere enviar la URL actual

2

document.location no es una cadena.

Probablemente desee utilizar document.location.href o document.location.pathname en su lugar.

+0

lol. 4 respuestas (al menos) al mismo tiempo. No debería ver las preguntas más recientes en SO :) –

6

plazo esto

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

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

+0

Gracias. No me di cuenta de que convertí mi var de cadena en objeto. Tu solución me dio una idea para revisar mi código. – sg552

Cuestiones relacionadas