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 display
değ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: none
ve arasında geçiş yapacaksınız display: block
, yani bir öğe koleksiyonu gösterirken aşağıdakiler yeterli olabilir .
display
Varsayı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, display
basamaklı 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, display
bir öğ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 display
için none
aksi satır içi kaldırmak display
stil 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>