Como mostrar ou ocultar um elemento:
Para mostrar ou ocultar um elemento, manipule a propriedade de estilo do elemento . Na maioria dos casos, você provavelmente só deseja alterar a display
propriedade do elemento :
element.style.display = 'none'; // Hide
element.style.display = 'block'; // Show
element.style.display = 'inline'; // Show
element.style.display = 'inline-block'; // Show
Como alternativa, se você ainda deseja que o elemento ocupe espaço (como se você ocultasse uma célula da tabela), poderá alterar a visibility
propriedade do elemento :
element.style.visibility = 'hidden'; // Hide
element.style.visibility = 'visible'; // Show
Ocultando uma coleção de elementos:
Se você deseja ocultar uma coleção de elementos, itere sobre cada elemento e altere os elementos display
para none
:
function hide (elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'none';
}
}
// Usage:
hide(document.querySelectorAll('.target'));
hide(document.querySelector('.target'));
hide(document.getElementById('target'));
hide(document.querySelectorAll('.target'));
function hide (elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'none';
}
}
<div class="target">This div will be hidden.</div>
<span class="target">This span will be hidden as well.</span>
Mostrando uma coleção de elementos:
Na maioria das vezes, você provavelmente apenas alternará entre display: none
e display: block
, o que significa que o seguinte pode ser suficiente ao mostrar uma coleção de elementos.
Opcionalmente, você pode especificar o desejado display
como o segundo argumento, se não desejar que ele seja o padrão block
.
function show (elements, specifiedDisplay) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = specifiedDisplay || 'block';
}
}
// Usage:
var elements = document.querySelectorAll('.target');
show(elements);
show(elements, 'inline-block'); // The second param allows you to specify a display value
var elements = document.querySelectorAll('.target');
show(elements, 'inline-block'); // The second param allows you to specify a display value
show(document.getElementById('hidden-input'));
function show (elements, specifiedDisplay) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = specifiedDisplay || 'block';
}
}
<div class="target" style="display: none">This hidden div should have a display of 'inline-block' when it is shown.</div>
<span>Inline span..</span>
<input id="hidden-input" />
Como alternativa, uma abordagem melhor para mostrar o (s) elemento (s) seria apenas remover o display
estilo embutido para revertê-lo ao seu estado inicial. Em seguida, verifique o display
estilo calculado do elemento para determinar se ele está sendo oculto por uma regra em cascata. Se sim, então mostre o elemento.
function show (elements, specifiedDisplay) {
var computedDisplay, element, index;
elements = elements.length ? elements : [elements];
for (index = 0; index < elements.length; index++) {
element = elements[index];
// Remove the element's inline display styling
element.style.display = '';
computedDisplay = window.getComputedStyle(element, null).getPropertyValue('display');
if (computedDisplay === 'none') {
element.style.display = specifiedDisplay || 'block';
}
}
}
show(document.querySelectorAll('.target'));
function show (elements, specifiedDisplay) {
var computedDisplay, element, index;
elements = elements.length ? elements : [elements];
for (index = 0; index < elements.length; index++) {
element = elements[index];
// Remove the element's inline display styling
element.style.display = '';
computedDisplay = window.getComputedStyle(element, null).getPropertyValue('display');
if (computedDisplay === 'none') {
element.style.display = specifiedDisplay || 'block';
}
}
}
<span class="target" style="display: none">Should revert back to being inline.</span>
<span class="target" style="display: none">Inline as well.</span>
<div class="target" style="display: none">Should revert back to being block level.</div>
<span class="target" style="display: none">Should revert back to being inline.</span>
(Se você quiser dar um passo adiante, pode até imitar o que o jQuery faz e determinar o estilo padrão do navegador do elemento, acrescentando o elemento a um espaço em branco iframe
(sem uma folha de estilo conflitante) e recuperando o estilo calculado. saberá a verdadeira inicialdisplay
valor da propriedade do elemento e você não precisará codificar um valor para obter os resultados desejados.)
Alternando a exibição:
Da mesma forma, se você deseja alternar display
entre um elemento ou uma coleção de elementos, basta iterar sobre cada elemento e determinar se ele é visível, verificando o valor calculado da display
propriedade. Se estiver visível, defina display
como none
, caso contrário, remova o display
estilo embutido e, se ainda estiver oculto, defina o display
valor especificado ou o padrão codificado block
.
function toggle (elements, specifiedDisplay) {
var element, index;
elements = elements.length ? elements : [elements];
for (index = 0; index < elements.length; index++) {
element = elements[index];
if (isElementHidden(element)) {
element.style.display = '';
// If the element is still hidden after removing the inline display
if (isElementHidden(element)) {
element.style.display = specifiedDisplay || 'block';
}
} else {
element.style.display = 'none';
}
}
function isElementHidden (element) {
return window.getComputedStyle(element, null).getPropertyValue('display') === 'none';
}
}
// Usage:
document.getElementById('toggle-button').addEventListener('click', function () {
toggle(document.querySelectorAll('.target'));
});
document.getElementById('toggle-button').addEventListener('click', function () {
toggle(document.querySelectorAll('.target'));
});
function toggle (elements, specifiedDisplay) {
var element, index;
elements = elements.length ? elements : [elements];
for (index = 0; index < elements.length; index++) {
element = elements[index];
if (isElementHidden(element)) {
element.style.display = '';
// If the element is still hidden after removing the inline display
if (isElementHidden(element)) {
element.style.display = specifiedDisplay || 'block';
}
} else {
element.style.display = 'none';
}
}
function isElementHidden (element) {
return window.getComputedStyle(element, null).getPropertyValue('display') === 'none';
}
}
.target { display: none; }
<button id="toggle-button">Toggle display</button>
<span class="target">Toggle the span.</span>
<div class="target">Toggle the div.</div>
Você pode simplesmente manipular o estilo da div em questão ...
fonte
Você pode ocultar / mostrar Div usando a função Js. amostra abaixo
HTML -
fonte
Usando o estilo:
Usar um manipulador de eventos em JavaScript é melhor que o
onclick=""
atributo em HTML:JavaScript:
O jQuery pode ajudá-lo a manipular elementos DOM com facilidade!
fonte
hidden
atributo de HTML5Achei esse código JavaScript simples muito útil!
fonte
Defina seu HTML como
E agora defina o javascript como
fonte
fonte
Just Simple Defina o atributo de estilo do ID:
Para mostrar a div oculta
Para ocultar a div mostrada
fonte
E a resposta Purescript, para pessoas que usam Halogênio:
Se você "inspecionar elemento", verá algo como:
mas nada será exibido na tela, conforme o esperado.
fonte
A função Just Simple precisa implementar Show / hide 'div' usando JavaScript
fonte
Encontrei essa pergunta e recentemente eu estava implementando algumas interfaces de usuário usando o Vue.js, portanto essa pode ser uma boa alternativa.
Primeiro, seu código não está oculto
target
quando você clica em Exibir perfil. Você está substituindo o conteúdotarget
pordiv2
.fonte
Você pode conseguir isso facilmente com o uso do jQuery .toggle () .
fonte