किसी तत्व को कैसे दिखाना या छिपाना है:
किसी तत्व को दिखाने या छिपाने के लिए, तत्व की शैली की संपत्ति में हेरफेर करें । ज्यादातर मामलों में, आप शायद केवल तत्व की display
संपत्ति बदलना चाहते हैं :
element.style.display = 'none'; // Hide
element.style.display = 'block'; // Show
element.style.display = 'inline'; // Show
element.style.display = 'inline-block'; // Show
वैकल्पिक रूप से, यदि आप अभी भी स्थान पर कब्जा करने के लिए तत्व को पसंद करेंगे (जैसे कि यदि आप टेबल सेल को छिपाने के लिए थे), तो आप तत्व की visibility
संपत्ति को बदल सकते हैं :
element.style.visibility = 'hidden'; // Hide
element.style.visibility = 'visible'; // Show
तत्वों का संग्रह छिपाना:
तुम सिर्फ पुनरावृति प्रत्येक तत्व पर, तत्वों का एक संग्रह छिपाने के लिए और तत्व का बदलना चाहते हैं display
के लिए 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>
तत्वों का संग्रह दिखा रहा है:
अधिकांश समय, आप शायद बीच display: none
- बीच में टॉगल करते रहेंगे display: block
, जिसका अर्थ है कि तत्वों का संग्रह दिखाते समय निम्नलिखित पर्याप्त हो सकता है।
display
यदि आप इसे डिफ़ॉल्ट रूप से नहीं चाहते हैं, तो आप वैकल्पिक रूप से दूसरे तर्क के रूप में वांछित निर्दिष्ट कर सकते हैं 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" />
वैकल्पिक रूप से, तत्व को दिखाने के लिए एक बेहतर तरीका केवल इनलाइन display
स्टाइल को हटाने के लिए होगा ताकि इसे अपनी प्रारंभिक स्थिति में वापस लाया जा सके। फिर display
यह निर्धारित करने के लिए तत्व की गणना की गई शैली की जांच करें कि क्या यह कैस्केड किए गए नियम द्वारा छिपाया जा रहा है। यदि ऐसा है, तो तत्व दिखाएं।
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>
(यदि आप इसे एक कदम और आगे ले जाना चाहते हैं, तो आप यह भी बता सकते हैं कि jQuery क्या करता है और तत्व के डिफ़ॉल्ट ब्राउज़र स्टाइल को तत्व को रिक्त में जोड़कर iframe
(एक परस्पर विरोधी स्टाइलशीट के बिना) निर्धारित कर सकता है और फिर गणना की गई स्टाइल को पुनः प्राप्त कर सकता है। ऐसा करने में, आप। display
तत्व के वास्तविक प्रारंभिक गुण मान को जान लेंगे और वांछित परिणाम प्राप्त करने के लिए आपको किसी मूल्य को हार्डकोड नहीं करना पड़ेगा।)
प्रदर्शन टॉगल करना:
इसी तरह, यदि आप display
किसी तत्व या तत्वों के संग्रह को टॉगल करना चाहते हैं, तो आप बस प्रत्येक तत्व पर पुनरावृति कर सकते हैं और यह निर्धारित कर सकते हैं कि क्या यह display
संपत्ति के गणना मूल्य की जांच करके दिखाई दे रहा है । यदि वह दिखाई है, सेट display
करने के लिए none
अन्यथा इनलाइन निकालने के लिए, display
स्टाइल, और अगर यह अभी भी छिपा हुआ है, सेट display
, निर्धारित मूल्य या हार्डकोडेड डिफ़ॉल्ट करने के लिए 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>