Toon/verberg 'div' met JavaScript
Voor een website die ik aan het maken ben, wil ik een div laden, en een andere verbergen, en dan twee knoppen hebben die van de ene div naar de andere gaan met behulp van JavaScript.
Dit is mijn huidige code
function replaceContentInContainer(target, source) {
document.getElementById(target).innerHTML = document.getElementById(source).innerHTML;
}
function replaceContentInOtherContainer(replace_target, source) {
document.getElementById(replace_target).innerHTML = document.getElementById(source).innerHTML;
}
<html>
<button onClick="replaceContentInContainer('target', 'replace_target')">View Portfolio</button>
<button onClick="replaceContentInOtherContainer('replace_target', 'target')">View Results</button>
<div>
<span id="target">div1</span>
</div>
<div style="display:none">
<span id="replace_target">div2</span>
</div>
De tweede functie die div2 vervangt werkt niet, maar de eerste wel.
170
3
Hoe toon of verberg je een element:
Om een element te tonen of te verbergen, manipuleer je de style eigenschap van het element's. In de meeste gevallen wil je waarschijnlijk alleen de
display
eigenschap van het element veranderen:Als alternatief, als je nog steeds wilt dat het element ruimte inneemt (zoals wanneer je een tabelcel wilt verbergen), zou je in plaats daarvan de
visibility
eigenschap van het element kunnen veranderen:Het verbergen van een verzameling elementen:
Als je een verzameling elementen wilt verbergen, itereer je gewoon over elk element en verander je het element's
display
innone
:Het tonen van een verzameling elementen:
Meestal zul je waarschijnlijk gewoon schakelen tussen
display: none
endisplay: block
, wat betekent dat het volgende misschien voldoende is bij het tonen van een verzameling elementen.Je kunt optioneel de gewenste
display
als tweede argument opgeven als je niet wilt datblock
de standaard is.Een betere aanpak voor het tonen van het element zou zijn om de inline
display
styling te verwijderen om het element terug te brengen naar zijn oorspronkelijke staat. Controleer dan de berekendedisplay
stijl van het element om te bepalen of het verborgen wordt door een cascade regel. Zo ja, toon het element dan.(Als je nog een stap verder wilt gaan, kun je zelfs nabootsen wat jQuery doet en de standaard browser styling van het element bepalen door het element toe te voegen aan een leeg
iframe
(zonder een conflicterende stylesheet) en dan de berekende styling op te halen. Als je dat doet, weet je de echte initiëledisplay
property waarde van het element en hoef je geen waarde te hardcoden om het gewenste resultaat te krijgen).Schakel de weergave:
Op dezelfde manier, als u de
display
van een element of verzameling elementen zou willen omwisselen, zou u eenvoudigweg over elk element kunnen itereren en bepalen of het zichtbaar is door de berekende waarde van dedisplay
eigenschap te controleren. Als het zichtbaar is, zet u dedisplay
opnone
, anders verwijdert u de inlinedisplay
styling, en als het nog steeds verborgen is, zet u dedisplay
op de opgegeven waarde of op de hardcoded default,block
.Je kunt gewoon de stijl van de div in kwestie manipuleren...
Gebruik stijl:
Het gebruik van een event handler in JavaScript is beter dan het
onclick=""
attribuut in HTML:JavaScript:
jQuery kan u helpen om DOM-elementen gemakkelijk te manipuleren!