2015-01-16 4 views
0

Я пытаюсь скрыть/показать div на основе щелчка кнопки, но я не могу заставить его работать.Скрыть/показать div с нажатием кнопки

Ниже приведен мой код. Я могу получить предупреждение, чтобы узнать, что я получаю правильный ID из DOM, но я не могу показать/скрыть содержимое div.

function toggleContent(id) { 
 
    var e = document.getElementById(id); 
 
    //if(e.style.display == null || e.style.display == "none") 
 
    if (e.style.visibility == null || e.style.visibility == "hidden") { 
 
    //e.style.display = "block"; 
 
    e.style.visibility: "visible"; 
 
    } else { 
 
    //e.style.display = "none"; 
 
    e.style.visibility: "hidden"; 
 
    } 
 
}
<form> 
 
    <button onclick="alertData();">Get Alerts</button> 
 
    <button onclick="toggleContent('chart');">Chart</button> 
 
    <hr> 
 
    <div id="chart" style="visibility: hidden;"> 
 
    my chart 
 
    </div> 
 
</form>

+0

Используйте функцию JQuery: тумблер(). его проще: http://api.jquery.com/toggle/ – ErasmoOliveira

+0

Похоже, у вас просто синтаксическая ошибка. Чтобы установить видимость, используйте знак равенства, а не двоеточие. –

+0

Я попробовал выше, и он сделал вспышку, но не остался на странице – wl2m

ответ

6

Вам нужно установить e.style.visibility с помощью =, не :, как вы сделали бы в файле CSS.

Кроме того, обратите внимание, что значение null эквивалентно visible, а не hidden.

function toggleContent(id) { 
 
    var e = document.getElementById(id); 
 
    
 
    if (e.style.visibility == "hidden") { 
 
    e.style.visibility = "visible"; 
 
    } else { 
 
    e.style.visibility = "hidden"; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<form> 
 
    <button onclick="alertData();">Get Alerts</button> 
 
    <button onclick="toggleContent('chart');">Chart</button> 
 
    <hr> 
 
    <div id="chart" style="visibility: hidden;"> 
 
    my chart 
 
    </div> 
 
</form>

0

function toggleContent(id) { 
 
event.preventDefault(); 
 
var e = document.getElementById(id); 
 
    
 
    e.style.visibility=="hidden" || e.style.visibility=="" ? e.style.visibility="visible": e.style.visibility="hidden"; 
 
    }
#chart{visibility:hidden;}
<form> 
 
    <button onclick="toggleContent('chart');">Chart</button> 
 
    <hr> 
 
     <div id="chart"> 
 
      my chart 
 
     </div></form>

+0

, то же самое - дал мне только флеш-память. плюс мне нужно скрыть на загрузку страницы – wl2m

+0

отредактированный ответ, он скрывает на загрузке страницы, если вы добавите css в ваш файл css, если не добавить стиль встроенного стиля, добавлено предупреждениеDefault, чтобы остановить отправку формы, которая вызывает флэш-страницу, перезагрузка страницы – Billy

Смежные вопросы