2010-11-18 33 views
5

Tôi có chức năng thay đổi hàm băm trong url và chèn/xóa một div khỏi trang chính của tôi. Tôi đã làm điều này để tôi có thể có một trang mà bạn có thể điều khiển mà không cần tải lại, nhưng đồng thời tôi muốn mọi người có thể đánh dấu một phần nhất định và truy cập trang đó sau mà không phải xem lại trang.nếu chức năng với window.location.hash giúp

Khi tôi cố gọi hàm hash(), đóng tất cả các div và mở div cụ thể tùy thuộc vào hàm băm, nó không hoạt động. Tôi có lẽ không có điều đúng trong câu lệnh if, bởi vì khi tôi đặt một số alert() vào chức năng hash(), nó sẽ xuất hiện như mong đợi.

function hash(){ 
    if (window.location.hash == "dcontact") { 
     removedivs(); 
     InsertContent('dcontact'); 
    } 
    if (window.location.hash == "dhome") { 
     removedivs(); 
     InsertContent('dhome'); 
    } 
} 
hash(); 

Tôi biết rằng có thể có cách tốt hơn để làm mọi thứ tôi đã đề cập, nhưng đây là trang web duy nhất tôi sẽ thực hiện và tôi không quan tâm đến việc tập lệnh bị lộn xộn cuối cùng, miễn là nó hoạt động.

Trả lời

7

lý do nó không hoạt động là băm thực tế (tại Mỹ Tôi nghĩ rằng bạn gọi nó là một pound) biểu tượng - # vào đầu window.location.hash

Từ bộ nhớ trình duyệt IE không đặt biểu tượng băm trên nó, vì vậy làm điều này:

function hash() { 
    var hash = window.location.hash.replace('#',''); 

    if (hash == "dcontact"){removedivs(); InsertContent('dcontact');} 
    if (hash == "dhome"){removedivs(); InsertContent('dhome');} 
} 

bạn cũng có thể xem xét chỉ gọi InsertContent (băm) chứ không phải làm một if() cho mỗi liên kết khác nhau mà bạn sẽ phải

+0

cảm ơn rất nhiều cho bạn giúp đỡ, nó hoạt động hoàn hảo. – pobrien

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