2011-02-07 175 views
0

我們有一些舊的代碼在我們的網站,我似乎無法找到爲什麼它不能正常工作,所以我想知道如果新鮮的眼睛可以看到我不能。 這些功能:Javascript切換問題

function Toggle(item) { 
    obj=document.getElementById(item); 
    visible=(obj.style.display!="none") 
    key=document.getElementById("x" + item); 
    if (visible) { 
    key.innerHTML="<img src='/images/common/leftsidebullet_closed.gif' height=10 width=10 border=0>"; 
    obj.style.display="none"; 
    } else { 
     key.innerHTML="<img src='/images/common/leftsidebullet_opened.gif' height=10 width=10 border=0>"; 
     obj.style.display="block"; 
    } 
} 

function Toggle2(item) { 
    obj=document.getElementById(item); 
    visible=(obj.style.display!="none") 
    key=document.getElementById("x" + item); 
    if (visible) { 
    obj.style.display="none"; 
    key.innerHTML="<img src='/images/common/leftsidebullet_closedOrange.gif' height=10 width=10 border=0>"; 
    } else { 
     obj.style.display="block"; 
     key.innerHTML="<img src='/images/common/leftsidebullet_openedOrange.gif' height=10 width=10 border=0>"; 
    } 
} 

和示例頁面位於here 如果你點擊了「第1部分 - 規格」,在頁面的中間列表項,它需要兩次點擊居然火切換而不是第一次這樣做。 這不是創建一個錯誤,我想不出任何其他的東西,所以我想我會問,如果別人可以看到一些東西。

回答

2

在頁面加載display屬性設置爲''(在Chrome中)。這與'none'不同。所以visible被錯誤地設置爲true。所以你的腳本想通過設置display屬性'none'來隱藏div。第二次單擊時,該腳本將評估visiblefalse。因此它通過將該屬性設置爲block來顯示div。

快速修復:

visible=(obj.style.display=="block") 

visible=(obj.style.display!="none") 
+0

非常感謝,這就是訣竅。我很確定這與「可見」設置不正確有關,但我沒有注意到「沒有」而不是「阻止」。 – stephmoreland 2011-02-07 19:37:02

0

代替作爲揚說......所以試試這個:

visible=!(obj.style.display==="block"); 

將插入到現有的代碼 - 或你可以取出!並切換if語句。