2012-04-13 25 views

Trả lời

125

Thay đổi này ...

var string = document.location; 

này ...

var string = document.location + ''; 

Điều này là do document.locationLocation object. Mặc định .toString() trả về vị trí dưới dạng chuỗi, do đó, việc ghép nối sẽ kích hoạt vị trí đó.


Bạn cũng có thể sử dụng document.URL để nhận chuỗi.

+22

Nó sẽ không được sạch hơn để gọi' toString() 'thay vì hacky nối? – kapa

+1

@ bažmegakapa: Vâng, đó là vấn đề ưu tiên. '+ ''' Là một thủ thuật khá phổ biến cho việc ép buộc chuỗi, nhưng một số người thích phương thức 'toString()'. Tôi sẽ không xem xét nó bất kỳ hacky hơn bằng cách sử dụng unary '+' để chuyển đổi số. –

+2

Điều đó cũng xấu xí. Có 'parseInt()' và 'parseFloat()'. Ngoài ra còn có 'Số()'. Các '+' là ngắn hơn tất nhiên, nhưng ít có thể đọc được cho một người nào đó không được sử dụng để hacky mã hoặc ít kinh nghiệm. – kapa

39

lẽ

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

giả sử bạn muốn url hiện tại

2

document.location không phải là một chuỗi.

Có thể bạn muốn sử dụng document.location.href hoặc document.location.pathname để thay thế.

+0

lol. 4 câu trả lời (ít nhất) cùng một lúc. Tôi không nên xem các câu hỏi mới nhất về SO :) –

6

chạy này

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

bạn muốn document.location.toString() hoặc document.location.href

+0

Cảm ơn bạn. Tôi đã không nhận ra tôi đã chuyển đổi var của tôi từ chuỗi thành đối tượng. Giải pháp của bạn đã cho tôi một ý tưởng để kiểm tra lại mã của tôi. – sg552

Các vấn đề liên quan