2016-12-24 9 views
3

だから私はこのコードを持っている:JavaScriptを使用してクラスの表示を変更するにはどうすればよいですか?

function show_all() 
 
    { 
 
    \t document.getElementByClassName('login').style.display = 'inline'; 
 
    \t document.getElementById('button-hide').style.display = 'inline'; 
 
    \t document.getElementById('button-show').style.display = 'none'; 
 
    }; 
 
    function hide_all() 
 
    { 
 
    \t document.getElementByClassName('login').style.display = 'none'; 
 
    \t document.getElementById('button-hide').style.display = 'none'; 
 
    \t document.getElementById('button-show').style.display = 'inline'; 
 
    };
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav> 
 
    \t <input type="button" value="Show login Buttons" id="button-show" onclick="show_all();"/> 
 
    \t <input type="button" value="Hide login Buttons" id="button-hide" onclick="hide_all();"/> 
 
    </nav> 
 
     <p class="login">Username:</p> 
 
     <img src="un.png" class="login"/> 
 
     <p class="login">Password:</p> 
 
    <p>Something not ment to be hidden.</p> 
 
     <img src="pass.png" class="login"/>

を私は表示/非表示されるように、クラス全体を必要とします。 "login"クラスの要素を持つブロックが約50あり、JavaScriptを使用して表示したいと考えています。

+0

jquery answer do do? – ab29007

+0

@AnujaAgarwalによると、jqueryの解決策はまだjavascriptですが、新しい依存関係が導入されています。つまり、ソリューションは数行のコードであり、ライブラリの導入に値するものです。 –

+0

それはajaxまたはjquaryではありません... –

答えて

0

代わりに、代わりにjQueryのオフラインバージョンを使用しました。

0

function show_all() 
 
    { 
 
\t $('.login').css('display','block'); 
 
    \t document.getElementById('button-hide').style.display = 'inline'; 
 
    \t document.getElementById('button-show').style.display = 'none'; 
 
    }; 
 
    function hide_all() 
 
    { 
 
    \t $('.login').css('display','none'); 
 
    \t document.getElementById('button-hide').style.display = 'none'; 
 
    \t document.getElementById('button-show').style.display = 'inline'; 
 
    };
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<nav> 
 
    \t <input type="button" value="Show login Buttons" id="button-show" onclick="show_all();"/> 
 
    \t <input type="button" value="Hide login Buttons" id="button-hide" onclick="hide_all();"/> 
 
    </nav> 
 
     <p class="login">Username:</p> 
 
     <!--<img src="un.png" class="login"/>--> 
 
     <p class="login">Password:</p> 
 
    <p>Something not meant to be hidden.</p> 
 
     <!--<img src="pass.png" class="login"/>-->

+1

私は思っていますので、POはjqueryソリューションを要求していませんタグを付けたJquery – Bharat

+0

私は最初にコメントで彼に尋ねてきました。はいと答えます。彼はjQueryを使いたいと思っています。それは非常に短い答えです。彼はそれを自由に使うことができます。 – ab29007

+0

彼は早く彼がこのクラスで50の要素を持っていると言っていたので、2つの 'for 'ループを実行する方が良いと思います。 – ab29007

2

すべての要素のdisplayを変更することは悪い考えです。これらのすべてのクラスをトグルするだけで、CSSにはdisplayというラッパーが設定されます。

0

あなたは

function findCssRule(selector){ 
    var sheet; 
    var list; 
    var rule; 
    var sheets = document.styleSheets; 

    if(sheets) { 
     for(var i = 0; sheet = sheets[i++];) { 
      list = sheet.cssRules || sheet.rules; // sheet.rules in IE; 
      for(var j = 0; j < list.length; ++j) { 
       rule=list[ j] 
       if(rule.type != 1) // styleRule 
        continue; 
       if(rule.selectorText != selector) 
        continue; 
       return rule; 
      } 
     } 
    } 
    return null; 
} 

のような機能を使用してそれを見つけ、

if(rule = findCssRule(".login")) 
    rule.style.display = 'none'; // or whatever it needs to be. 

のようにそれを適用した後にCSSルールを変更することができ、私はそう確認してくださいこういうことをやって他の人が気づいていませんそれは使用前に。 @ br3tの対応のアプローチはずっと普通です。

0

JQueryを使用しないでください。それは非常にシンプルで簡単です。スタイルは非/インライン/ブロックなどになります。

$( '。className').css( 'display'、 'style');

0

表示:

document.querySelectorAll(".login").forEach(a=>a.style.display = "initial"); 

を隠す:

document.querySelectorAll(".login").forEach(a=>a.style.display = "none"); 
2

少し遅くなりましたが、これは、いくつかのビューを取得します。どうしてですか:

var arrayOfElements=document.getElementsByClassName('login'); 
var lengthOfArray=arrayOfElements.length; 

for (var i=0; i<lengthOfArray;i++){ 
    arrayOfElements[i].style.display='inline'; 
} 
関連する問題