Pour un site Web que je suis en train de faire, je veux charger un div, et en masquer un autre, puis avoir deux boutons qui alterneront les vues entre les div en utilisant JavaScript.
Ceci est mon code actuel
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>
La deuxième fonction qui remplace div2 ne fonctionne pas, mais la première l'est.
javascript
html
onclick
Jake Ols
la source
la source
Réponses:
Comment afficher ou masquer un élément:
Pour afficher ou masquer un élément, manipulez la propriété de style de l'élément . Dans la plupart des cas, vous souhaitez probablement simplement modifier la
display
propriété de l'élément :element.style.display = 'none'; // Hide element.style.display = 'block'; // Show element.style.display = 'inline'; // Show element.style.display = 'inline-block'; // Show
Sinon, si vous souhaitez toujours que l'élément occupe de l'espace (comme si vous deviez masquer une cellule de tableau), vous pouvez modifier la
visibility
propriété de l'élément à la place:element.style.visibility = 'hidden'; // Hide element.style.visibility = 'visible'; // Show
Masquer une collection d'éléments:
Si vous souhaitez masquer une collection d'éléments, parcourez simplement chaque élément et changez l'élément
display
ennone
: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'));
Afficher l'extrait de code
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>
Affichage d'une collection d'éléments:
La plupart du temps, vous basculerez probablement simplement entre
display: none
etdisplay: block
, ce qui signifie que ce qui suit peut être suffisant pour afficher une collection d'éléments.Vous pouvez éventuellement spécifier le paramètre souhaité
display
comme deuxième argument si vous ne souhaitez pas qu'il soit défini par défautblock
.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
Afficher l'extrait de code
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" />
En variante, une meilleure approche pour montrer le ou les éléments serait de simplement supprimer le
display
style en ligne afin de le ramener à son état initial. Vérifiez ensuite ledisplay
style calculé de l'élément afin de déterminer s'il est masqué par une règle en cascade. Si tel est le cas, montrez l'élément.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'; } } }
Afficher l'extrait de code
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>
(Si vous souhaitez aller plus loin, vous pouvez même imiter ce que fait jQuery et déterminer le style de navigateur par défaut de l'élément en ajoutant l'élément à un espace vide
iframe
(sans feuille de style en conflit), puis récupérer le style calculé. Ce faisant, vous connaîtra la vraiedisplay
valeur de propriété initiale de l'élément et vous n'aurez pas à coder en dur une valeur pour obtenir les résultats souhaités.)Basculer l'affichage:
De même, si vous souhaitez basculer
display
entre un élément ou une collection d'éléments, vous pouvez simplement parcourir chaque élément et déterminer s'il est visible en vérifiant la valeur calculée de ladisplay
propriété. Si elle est visible, réglez ledisplay
ànone
, sinon retirer la ligne dedisplay
style, et si elle est toujours caché, définissez ladisplay
à la valeur spécifiée ou par défaut hardcoded,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')); });
Afficher l'extrait de code
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>
la source
Vous pouvez également utiliser le framework JavaScript jQuery :
Pour masquer le bloc de division
$(".divIDClass").hide();
Pour afficher le bloc div
$(".divIDClass").show();
la source
Vous pouvez simplement manipuler le style de la div en question ...
document.getElementById('target').style.display = 'none';
la source
Vous pouvez masquer / afficher la division en utilisant la fonction Js. échantillon ci-dessous
<script> function showDivAttid(){ if(Your Condition) { document.getElementById("attid").style.display = 'inline'; } else { document.getElementById("attid").style.display = 'none'; } } </script>
HTML -
<div id="attid" style="display:none;">Show/Hide this text</div>
la source
Utilisation du style:
<style type="text/css"> .hidden { display: none; { .visible { display: block; } </style>
L'utilisation d'un gestionnaire d'événements en JavaScript est meilleure que l'
onclick=""
attribut en HTML:<button id="RenderPortfolio_Btn">View Portfolio</button> <button id="RenderResults_Btn">View Results</button> <div class="visible" id="portfolio"> <span>div1</span> </div> <div class"hidden" id="results"> <span>div2</span> </div>
JavaScript:
<script type="text/javascript"> var portfolioDiv = document.getElementById('portfolio'); var resultsDiv = document.getElementById('results'); var portfolioBtn = document.getElementById('RenderPortfolio_Btn'); var resultsBtn = document.getElementById('RenderResults_Btn'); portfolioBtn.onclick = function() { resultsDiv.setAttribute('class', 'hidden'); portfolioDiv.setAttribute('class', 'visible'); }; resultsBtn.onclick = function() { portfolioDiv.setAttribute('class', 'hidden'); resultsDiv.setAttribute('class', 'visible'); }; </script>
jQuery peut vous aider à manipuler facilement les éléments DOM!
la source
hidden
attribut HTML5J'ai trouvé ce code JavaScript simple très pratique!
#<script type="text/javascript"> function toggle_visibility(id) { var e = document.getElementById(id); if ( e.style.display == 'block' ) e.style.display = 'none'; else e.style.display = 'block'; } </script>
la source
Définissez votre HTML comme
<div id="body" hidden=""> <h1>Numbers</h1> </div> <div id="body1" hidden="hidden"> Body 1 </div>
Et maintenant, définissez le javascript comme
function changeDiv() { document.getElementById('body').hidden = "hidden"; // hide body div tag document.getElementById('body1').hidden = ""; // show body1 div tag document.getElementById('body1').innerHTML = "If you can see this, JavaScript function worked"; // display text if JavaScript worked }
la source
<script type="text/javascript"> function hide(){ document.getElementById('id').hidden = true; } function show(){ document.getElementById('id').hidden = false; } </script>
la source
Simplement simple Définissez l'attribut de style de l'ID:
Pour afficher le div masqué
<div id="xyz" style="display:none"> ............... </div> //In JavaScript document.getElementById('xyz').style.display ='block'; // to hide
Pour masquer le div affiché
<div id="xyz"> ............... </div> //In JavaScript document.getElementById('xyz').style.display ='none'; // to display
la source
Et la réponse Purescript, pour les personnes utilisant halogène:
import CSS (display, displayNone) import Halogen.HTML as HH import Halogen.HTML.CSS as CSS render state = HH.div [ CSS.style $ display displayNone ] [ HH.text "Hi there!" ]
Si vous "inspectez l'élément", vous verrez quelque chose comme:
<div style="display: none">Hi there!</div>
mais rien ne s'affichera réellement sur votre écran, comme prévu.
la source
Juste une fonction simple nécessaire pour implémenter Afficher / masquer 'div' en utilisant JavaScript
<a id="morelink" class="link-more" style="font-weight: bold; display: block;" onclick="this.style.display='none'; document.getElementById('states').style.display='block'; return false;">READ MORE</a> <div id="states" style="display: block; line-height: 1.6em;"> text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here text here <a class="link-less" style="font-weight: bold;" onclick="document.getElementById('morelink').style.display='inline-block'; document.getElementById('states').style.display='none'; return false;">LESS INFORMATION</a> </div>
la source
J'ai trouvé cette question et récemment, j'ai implémenté certaines interfaces utilisateur en utilisant Vue.js, donc cela peut être une bonne alternative.
Tout d'abord, votre code ne se cache pas
target
lorsque vous cliquez sur Afficher le profil. Vous remplacez le contenutarget
pardiv2
.let multiple = new Vue({ el: "#multiple", data: { items: [{ id: 0, name: 'View Profile', desc: 'Show profile', show: false, }, { id: 1, name: 'View Results', desc: 'Show results', show: false, }, ], selected: '', shown: false, }, methods: { showItem: function(item) { if (this.selected && this.selected.id === item.id) { item.show = item.show && this.shown ? false : !item.show; } else { item.show = (this.selected.show || !item.show) && this.shown ? true : !this.shown; } this.shown = item.show; this.selected = item; }, }, });
<div id="multiple"> <button type="button" v-for="item in items" v-on:click="showItem(item)">{{item.name}}</button> <div class="" v-if="shown">: {{selected.desc}}</div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.7/vue.js"></script>
la source
Vous pouvez facilement y parvenir avec l'utilisation de jQuery .toggle () .
$("#btnDisplay").click(function() { $("#div1").toggle(); $("#div2").toggle(); });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="div1"> First Div </div> <div id="div2" style="display: none;"> Second Div </div> <button id="btnDisplay">Display</button>
la source
Au lieu de cela, vos deux fonctions utilisent la
toggle
fonction avec le corps suivantthis[target].parentNode.style.display = 'none' this[source].parentNode.style.display = 'block'
Afficher l'extrait de code
function toggle(target, source) { this[target].parentNode.style.display = 'none' this[source].parentNode.style.display = 'block' }
<button onClick="toggle('target', 'replace_target')">View Portfolio</button> <button onClick="toggle('replace_target', 'target')">View Results</button> <div> <span id="target">div1</span> </div> <div style="display:none"> <span id="replace_target">div2</span> </div>
la source