用javascript显示后隐藏div

时间:2017-04-04 20:16:01

标签: javascript html css show-hide

我正在使用javascript通过单击按钮显示隐藏的div。显示div后,我希望能够再次单击该按钮并隐藏div,依此类推......

这是我的javascript:

<script type="text/javascript">
function showDiv() {
   document.getElementById('dropdownText').style.display = "block";
}
</script>

这是按钮:

<input type="button" name="answer" value="+" onclick="showDiv()" />

这是隐藏的div:

<div id="dropdownText" style="display:none;">
   This is the dropdown text.
</div>

4 个答案:

答案 0 :(得分:2)

你可以,例如将指定的类绑定到元素并只是切换它。

function showDiv() {
   document.getElementById('dropdownText').classList.toggle("hidden");
}
.hidden {
  display: none;
}
<input type="button" name="answer" value="+" onclick="showDiv()" />
This is the hidden div:

<div id="dropdownText" class='hidden'>
   This is the dropdown text.
</div>

答案 1 :(得分:1)

如果你也用jQuery标记了这个问题,那么我想你可以使用.toggle函数,就像这样 -

$('#answer').click(function() {
    $('#dropdownText').toggle();
}

如果你只想坚持使用javascript,你的showDiv()函数应该是这样的 -

function showDiv() {
     let text = document.getElementById('dropdownText');
     if (text.style.display === 'none') {
       text.style.display = 'block';
    } 
    else {
    text.style.display = 'none';
    }
}

每次点击按钮时都应捕捉当前样式,因为您想要切换&#39;它回到了相反的状态。

答案 2 :(得分:0)

您只需要这样做:

const drop = document.getElementById('dropdownText')

const toggleDropdown = _ => {
   const cl = drop.classList
   cl.contains('hide')?cl.remove('hide'):cl.add('hide')
}
#dropdownText.hide {display:none}


/* DropDown Styles for this demo */ 
#dropdownText {width: 10em; height: 4em; background: green}
<button onclick='toggleDropdown()'>Toggle Div</button>
<div id='dropdownText'></div>

注意: 点击Run Code Snippet查看正在运行的代码。

它的工作方式是检测它是否具有隐藏类并基于此,切换该类。

实际隐藏和显示是通过CSS完成的!

答案 3 :(得分:0)

<div id="dropdownText" style="display:none">
This is the dropdown text.
</div>

<script type="text/javascript">

function showDiv() {
    var x = document.getElementById('dropdownText');
    if (x.style.display === 'none') {
        x.style.display = 'block';
    } else {
    x.style.display = 'none';
    }
}
</script>