2017-04-19 10 views
1

これまでに多くの質問を検索して検索しましたが、驚いたことにそのうちの誰も私が達成しようとしているものに答えません。 JQueryでこれは簡単ですが、私は厳格なjavascriptで苦労しています。JSまたはCSSが組み込まれていない厳格なjavascriptを使用してDIVを表示および非表示する

は私が

これは私がこれまで持っているものです... HTMLに埋め込まれJSやCSSを持つことはできません。

function showhide() 
{ 
    var billingaddress = document.getElementById("billingaddress"); 
    if (billingaddress.style.display === "block") 
     { 
      billingaddress.style.display = "none"; 
     } 
    else if (billingaddress.style.display === "none") 
     { 
      billingaddress.style.display = "block"; 
     } 
} 

function init() 
{ 
    var billingcheckbox = document.getElementById("billing"); 

    if (billingcheckbox.checked) 
     { 
      showhide(); 
     } 
    else 
     { 
      showhide(); 
     } 

これは、CSSを使用して、デフォルトでは非表示になっています。

乾杯、

+0

_ "隠しデフォルトでCSSを使用して "_ ---どのように隠されていますか? – evolutionxbox

+0

また、 'billingaddress'を再クエリすることは無駄です。代わりに 'showhide'のパラメータとして渡してください。 – evolutionxbox

+0

css #billingaddress { ディスプレイを使用:なし; } – Noob

答えて

1

あなたが提供したコードでは、このようにすることができます。

billingaddress.style.displayはデフォルトでは空ですが、比較せずにifで簡単に確認できます。

function showhide() { 
 
    if (billingaddress.style.display) billingaddress.style.display = "" 
 
    else billingaddress.style.display = 'none'; 
 
} 
 

 
var billingaddress = document.getElementById("billingaddress") 
 
var billingcheckbox = document.getElementById("billing") 
 
billingcheckbox.addEventListener('change', showhide) 
 
billingcheckbox.checked = true 
 
showhide()
<input type="checkbox" id="billing"/> Hide 
 
<div id="billingaddress">Lorem Ipsum</div>

+2

'addEventListener'を使用しない理由は何ですか? – evolutionxbox

+0

しかし、onchange = "showhide()"埋め込みJavaScriptを使用していないのですか? – Noob

+0

私はaddEventListenerを試してみます...どうすればいいのですか – Noob

1

それは、このように簡単です:

あなたはthis.checkedプロパティでチェックボックスの状態を得ることができるので、イベントハンドラ内でこのキーワードはチェックボックスの要素を参照。

<input type="checkbox" id="billing"> 
 
<input type="text" id="billingaddress" placeholder="Address" style="display:none"> 
 
<script> 
 
    var billingAddress = document.getElementById("billingaddress"); 
 
    var billingCheckbox = document.getElementById("billing"); 
 

 
    billingCheckbox.addEventListener('click', function(event) { 
 
    billingAddress.style.display = this.checked ? "block" : "none"; 
 
    }) 
 
</script>

0

以下のコードは、それを行う必要があります - しかし、すべてのIDがHTMLマークアップにあるもので、最大一致していることを確認してください確認する:

function showhide(show) { 

    var billingaddress = document.getElementById("billingaddress"); 

    if (show) { 

     billingaddress.style.display = "block"; 

    } else {  

     billingaddress.style.display = "none"; 
    } 
} 

function init() { 

    var billingcheckbox = document.getElementById("billing"); 

    if (billingcheckbox.checked) { 

     showhide(true); 

    } else {  

     showhide(false); 
    } 
} 
+0

を試してみました。申し訳ありませんが、それはうまく動作しませんでした。私は以前のようなものを試してみましたが、どちらもうまくいきませんでした。上のmrs ARCSはそれを働かせてくれました。 – Noob

+0

ああ、私はイベントハンドラ/リスナーを持つことは私の解決策には欠けていると思います。あなたはそれが働いてうれしい!更新していただきありがとうございます :) –

関連する問題