2012-12-17 33 views
0

我知道否則,如果作品上的jQuery那麼,在這段代碼的問題:jQuery的document.location.href如果,否則,如果和else

if (document.location.href.indexOf('#1')) { 
    $(".products li").fadeIn(); 
} 
else if (document.location.href === '#2') { 
    $(".products li").fadeOut(); 
    $(".products li.2").stop(true,true).fadeIn(200); 
} 
else if (document.location.href === '#3') { 
    $(".products li").fadeOut(); 
    $(".products li.3").stop(true,true).fadeIn(200); 
} 
else if (document.location.href === '#4') { 
    $(".products li").fadeOut(); 
    $(".products li.4").stop(true,true).fadeIn(200); 
} 
else if (document.location.href === '#5') { 
    $(".products li").fadeOut(); 
    $(".products li.5").stop(true,true).fadeIn(200); 
} 
else if (document.location.href === '#6') { 
    $(".products li").fadeOut(); 
    $(".products li.6").stop(true,true).fadeIn(200); 
} 
else { 
    $(".products li").fadeIn(); 
} 

如果我只放如果,而不是其他如果有效,但不正確。

+0

你究竟想要達到什麼目的? –

+0

[正確的對象是'window.location',而不是'document.location' - 雖然兩者都可以在現代瀏覽器中使用。](http://stackoverflow.com/questions/2430936/whats-the-difference-between- window-location-and-document-location-in-javascript) – Blazemonger

+0

我有一個可點擊的不同類別的列表,當你點擊一個類別時,它只會顯示具有該類別標識的產品。 – simo

回答

1

表達式​​will return -1 if no match is found,如果它匹配在字符串的開頭,則爲零。既然你測試了錯誤的值,你永遠不會有錯誤的結果(-1評估爲布爾型true)。你應該寫:

if (document.location.href.indexOf('#1')>-1) { 

但既然你似乎比較哈希值,就讓我們做這些,而不是直接(和使用properwindow.location,而我們在這):

if (window.location.hash == '#1') { 
    // ... 
} else if (window.location.hash == '#2') { 
    // etc. 

那說如果你正在使用IND

var hash = window.location.hash.substr(1); // remove leading # 
if (hash) { 
    $(".products li").fadeOut(); 
    $(".products li."+hash).stop(true,true).fadeIn(200); 
} else { 
    $(".products li").fadeIn(); 
} 
+0

謝謝。你最後的解決方案非常棒。 – simo

0

第一:在你的情況,我們就可以通過解析這個hash字符串這樣做完全沒有if/else EXOF:

if (document.location.href.indexOf('#1')) 

但在另外否則,如果你不使用它,而是你比較href.location本身:

else if (document.location.href === '#2') 
+0

可能OP意味着使用'document.location.hash'來代替。 – Blazemonger

1

看起來要檢查在該散列值URL,所以你爲什麼不使用

location.hash

因爲location.href包括整個URL

+0

是的,我想要的是檢查網址中的哈希值。 如果我使用location.hash第一個如果它像這樣變化 if(window.location.hash ==='#1')? – simo

+0

是的,但Blazemonger在他的回答中很好地解釋了它。就跟他解釋的一樣吧。 –

+0

非常感謝。 – simo