Bir öğeyi gösterme veya gizleme:
Bir öğeyi göstermek veya gizlemek için öğenin style özelliğini kullanın . Çoğu durumda, muhtemelen öğenin displayözelliğini değiştirmek istersiniz :
element.style.display = 'none'; // Hide
element.style.display = 'block'; // Show
element.style.display = 'inline'; // Show
element.style.display = 'inline-block'; // Show
Alternatif olarak, öğenin yine de yer kaplamasını istiyorsanız (bir tablo hücresini gizleyeceğiniz gibi), bunun yerine öğenin visibilityözelliğini değiştirebilirsiniz :
element.style.visibility = 'hidden'; // Hide
element.style.visibility = 'visible'; // Show
Bir öğe koleksiyonunu gizleme:
Bir öğe koleksiyonunu gizlemek istiyorsanız, her öğenin üzerinde tekrarlayın ve öğenin şu şekilde displaydeğiştirin 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>
Bir öğe koleksiyonu gösteriliyor:
Çoğu zaman, muhtemelen display: noneve arasında geçiş yapacaksınız display: block, yani bir öğe koleksiyonu gösterirken aşağıdakiler yeterli olabilir .
displayVarsayılan olarak olmasını istemiyorsanız , isteğe bağlı olarak ikinci argüman olarak istediğinizi belirtebilirsiniz 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" />
Alternatif olarak, eleman (lar) ı göstermek için daha iyi bir yaklaşım display, başlangıçtaki haline geri döndürmek için yalnızca satır içi stili kaldırmaktır . Ardından, displaybasamaklı bir kural tarafından gizlenip gizlenmediğini belirlemek için öğenin hesaplanan stilini kontrol edin . Öyleyse, öğeyi gösterin.
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>
(Bir adım daha ileri götürmek isterseniz, jQuery'nin ne yaptığını taklit edebilir ve öğeyi boş iframe(çakışan bir stil sayfası olmadan) ekleyerek öğenin varsayılan tarayıcı stilini belirleyebilir ve ardından hesaplanan stili alabilirsiniz. displayöğenin gerçek başlangıç özellik değerini bilecek ve istenen sonuçları elde etmek için bir değeri kodlamak zorunda kalmayacaksınız.)
Ekranı değiştirme:
Benzer şekilde, displaybir öğenin veya öğe koleksiyonunun geçişini yapmak isterseniz, her öğenin üzerinde yineleme yapabilir ve displayözelliğin hesaplanan değerini kontrol ederek görünür olup olmadığını belirleyebilirsiniz . Görünür ise, set displayiçin noneaksi satır içi kaldırmak displaystil ve hala gizli eğer, set display, belirli bir değere veya kodlanmış varsayılan 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>