2017-04-19 39 views
1

我已經搜索和搜索了很多以前回答的問題,令我驚訝的是,他們中沒有人回答我想要完成的任務。與JQuery這很容易,但我正在努力與嚴格的JavaScript。使用嚴格的JavaScript隱藏和顯示DIV,沒有嵌入的JS或CSS

我不能有任何嵌入JS或CSS在HTML ...

這是我到目前爲止有:

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 { display:none; } – Noob

回答

1

隨着他提供的代碼,它可以這樣做。

billingaddress.style.display默認情況下爲空,您可以在沒有比較的情況下輕鬆檢查它。

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關鍵字引用checkbox元素,讓你可以複選框狀態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

剛剛嘗試過。對不起,隊友它沒有工作。我之前嘗試過類似的方法,但也沒有奏效。上面的ARCS先生正在工作。 – Noob

+0

啊我認爲有一個事件處理程序/監聽器是我的解決方案中缺少的。真高興你做到了!感謝更新 :) –