2011-02-07 42 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>"; 
    } 
} 

そして、例のページが配置されているあなたは、「セクション1 - 仕様」をクリックすると hereページの中央にあるリスト項目、それは実際にトグルを発射する2回のクリックが必要ですそれを最初にやっているのではなく、 エラーが発生していないので、他のことは考えられないので、他の誰かが何かを見ることができるかどうか尋ねると思いました。

答えて

2

ロード時displayプロパティが''(Chromeの場合)に設定されています。 'none'とは異なります。したがってvisibletrueに誤って設定されています。だから、あなたのスクリプトはdisplayプロパティを'none'に設定してdivを隠そうとしています。 2回目をクリックすると、スクリプトはvisibleからfalseまで評価します。したがって、プロパティをblockに設定してdivを表示します。

クイックフィックス:

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

ありがとうございました、それはトリックでした。私はそれが "目に見える"ものが正しく設定されていないことと関係があるとはかなり確信していましたが、私は "ブロック"の代わりに "なし"に気づいていませんでした。 – stephmoreland

0

の代わりに

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

月が言うように...そう、これを試してみてください。

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

は、既存のコードにプラグインウィル - または!を取り出し、if文を切り替えて使用することができます。