2012-04-25 7 views
3

私は自分のウェブサイトにライトスイッチの画像を持っています。 (onClickを使用して)関数をトリガーすると、ラッパーdivの不透明度が0.2になり、ライトがオフになります。JavaScript - スイッチをオンにしてからオフにする

スイッチがクリックされ、ライトが「オフ」になっていますが、スイッチをオンに戻す方法はありません。

function lightSwitch() 
{ 
    document.getElementById("switchoff").style.opacity = '0.2'; 
} 

私はJavaScriptがとても新しいので、解決策は簡単だと確信しています。

+1

は、あなたが1に戻って、不透明度をリセットしようとしたことがありますか? – Krishna

+0

"...しかし、私はそれらを元に戻す方法を考えることができません。" – SlavaNov

答えて

5
function lightSwitch() 
{ 
    var el = document.getElementById("switchoff"), 
     opacity = el.style.opacity; 

    if(opacity == '0.2') 
     el.style.opacity = '1'; 
    else 
     el.style.opacity = '0.2'; 
} 

ノート - これはテストされていない、実際の値は、( "0.2" や "0.2")を異なる場合があります - あなたは" このような

+0

作成した不透明度変数はオブジェクトではない値です。これは機能しません。変数の値だけが変更されます。代わりにスタイルを設定するためのrefを作成する必要があります。 –

1

何かが動作するはずですテストする必要がある

。私はあなたの質問の権利を理解している場合
function lightSwitch() {  

    var lightSwitch = document.getElementById("switchoff"); 

    if(lightSwitch.style.opacity != "0.2") //If the div is not 'off' 
    { 
    lightSwitch.style.opacity = '0.2'; //switch it 'off' 
    } 
    else 
    { 
    lightSwitch.style.opacity = '1.0'; // else switch it back 'on'  
    } 
} 
2

、あなたはいくつかの時間後にそれをオフにしたい

ですから、このようなsetTimeoutなものを使用する必要があります。

function lightSwitch() 
{ 
    document.getElementById("switchoff").style.opacity = '0.2'; 
    setTimeout(...function to turn it off...,5000); // 5000 mseconds 
} 

さらに詳しい情報:JS timing

2

より良いアプローチは、「のLightsOut」と呼ばれるCSSクラスを作成し、追加/あなたのswitchoff要素にこれを削除することです。

function toggleClass(element, className) { 
    element.classList.toggle(className); 
} 

注意、classListは、Internet Explorerには実装されていないので、あなたは、このためにEli Grey's polyfillを参照する必要があります。この関数を使用するには、要素とクラス名を渡します。だから、ID switchOffで再び要素を、それを使用するために、我々は次のことを行うことができます:

toggleClass(document.getElementById("switchOff"), 'lightsOut'); 
2

あなたはjQueryを使って「オン」と別の「オフ」のために、その後toggleClassのラッパーのdivにCSSでクラスを与えることができます。

$(document).ready(function() { 

     $(".switchClass").click(function() { 
      $(this).toggleClass("off"); 
      return false; 
     }); 
    }); 

CSS:

div.switchClass{ 
//Insert your own look and feel 
} 

div.off.switchClass{ 
//Same style as div.switchClass except change the opacity 
opacity: 0.2; 
} 
関連する問題