วิธีแสดงหรือซ่อนองค์ประกอบ:
เพื่อที่จะแสดงหรือซ่อนองค์ประกอบจัดการกับองค์ประกอบของโรงแรมสไตล์ ในกรณีส่วนใหญ่คุณอาจต้องการเปลี่ยน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
มูลค่าทรัพย์สินเริ่มต้นที่แท้จริงขององค์ประกอบและคุณไม่ต้อง hardcode ค่าเพื่อให้ได้ผลลัพธ์ที่ต้องการ)
การสลับการแสดงผล:
หากคุณต้องการสลับ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>