2012-01-21 14 views
0

私はクリック時に行番号を削除する小さなトグルスイッチを構築しようとしています。私はここで働いて、それを持っているJavascript toggle list-style

http://www.webdevout.net/test?09&raw

それはGeshiによって強調されたコードである、と私は行番号を切り替えるには、上部にはJavaScriptを構築します。

これはうまくいきますが、私が本当に望むのは、行番号が「非表示」のときに、左の空白も削除されるということです。実際のコードが画面に表示されるようにします。

再度クリックすると、行番号が再び表示されます。あなたが0にol要素のパディングを変更する必要が

答えて

2

document.getElementsByTagName("ol")[0].style.padding = '0'; 

スクリプトの上には、あなただけのドキュメント内の1つの<ol>を持っていると仮定している、または少なくとも第1は、編集したいものです。あなたがあなたのアプローチは、しかし少しビット間違っている、あなたは<ol>のlistStyleを変更する必要があります

document.getElementsByTagName("ol")[0].style.paddingLeft = '0px'; 

document.getElementsByTagName("ol")[0].style.paddingLeft = '20px'; 

切り替えるなければならないでしょう

EDIT

個々のタグではなく、<li>タグです。

document.getElementsByTagName("ol")[0].style.listStyle = 'none'; 

document.getElementsByTagName("ol")[0].style.listStyle = 'decimal'; 

EDIT2おそらく、これを試してみます。あなたも私にそれをリンクすることができれば、私はクロームとファイアフォックスでそれをテストすることができます。たぶん私はあなたの問題..

function toggle_visibility() { 
    var e = document.getElementsByTagName("ol")[0]; 
    if(e.style.listStyle == 'none') { 
     e.style.listStyle = 'decimal'; 
     e.style.paddingLeft = '20px'; 
    } else { 
     e.style.listStyle = 'none'; 
     e.style.paddingLeft = '0px'; 
    } 
    } 
} 

リンク

<a onclick="toggle_visibility();">toggle</a> 

EDIT3

ああが届かない、私は問題を発見:)

if(document.getElementsByTagName("ol")[0].style.listStyle.substr(0,4) == 'none') 

ときのでlistStyleを 'none'に設定します。実際には 'none none'に設定されます。 IE。したがって、.substr(0,4)を使用して最初の4文字をどれとも比較しない場合は、うまくいくはずです。

+0

魅力的に機能した素晴らしいリック!私がまだ持っている1つの問題は、Firefoxです。クロームではうまくいきますが、Firefoxではその行を隠すことができますが、もう一度クリックすると元に戻りません。何か案は? –

+0

@Boon上記の編集を参照してください:) –

+0

最後の例は、実際には左のスペースを隠すわけではありませんが、PaddingLeftは0にします。しかし、それはまだFirefoxとIEで不器用ではない、クロムは正常に動作します。 –