Comment puis-je cacher le lien «Edit» après que je l'ai appuyé? Et je peux aussi cacher le texte "lorem ipsum" lorsque je presse l'édition?
<script type="text/javascript"> function showStuff(id) { document.getElementById(id).style.display = 'block'; } </script> <td class="post"> <a href="#" onclick="showStuff('answer1'); return false;">Edit</a> <span id="answer1" style="display: none;"> <textarea rows="10" cols="115"></textarea> </span> Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum </td>
<script type="text/javascript"> function showStuff(id, text, btn) { document.getElementById(id).style.display = 'block'; // hide the lorem ipsum text document.getElementById(text).style.display = 'none'; // hide the link btn.style.display = 'none'; } </script> <td class="post"> <a href="#" onclick="showStuff('answer1', 'text1', this); return false;">Edit</a> <span id="answer1" style="display: none;"> <textarea rows="10" cols="115"></textarea> </span> <span id="text1">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum</span> </td>
J'aimerais vous suggérer l'option JQuery .
$("#item").toggle(); $("#item").hide(); $("#item").show();
Par exemple:
$(document).ready(function(){ $("#item").click(function(event){ //Your actions here }); });
Vous pouvez également utiliser ce code pour afficher / masquer les éléments:
document.getElementById(id).style.visibility = "hidden"; document.getElementById(id).style.visibility = "visible";
Remarque La différence entre style.visibility
et style.display
est lors de l'utilisation de la visibilité: caché à la différence de l'affichage: aucun, la balise n'est pas visible, mais l'espace est alloué sur la page. La balise est rendue, elle n'est pas visible sur la page.
Voir ce lien pour voir les différences.
Je suggérerais cela pour cacher des éléments (comme d'autres l'ont suggéré):
document.getElementById(id).style.display = 'none';
Mais pour rendre les éléments visibles, je suggérerais ceci (au lieu d'afficher = 'bloc'):
document.getElementById(id).style.display = '';
La raison en est que l'utilisation de display = 'block' provoque une marge / espace blanc supplémentaire à côté de l'élément visible dans IE (11) et Chrome (Version 43.0.2357.130 m) sur la page sur laquelle je travaille.
Lorsque vous chargez d'abord une page dans Chrome, un élément sans attribut style apparaîtra comme ceci dans l'inspecteur DOM:
element.style { }
Cacher cela en utilisant le JavaScript standard le rend tel, comme prévu:
element.style { display: none; }
Le fait de le rendre visible à nouveau en utilisant display = 'block' le modifie à ceci:
element.style { display: block; }
Ce n'est pas le même qu'il était à l'origine. Cela pourrait très bien ne pas faire de différence dans la majorité des cas. Mais dans certains cas, il présente des anomalies.
L'utilisation de display = '' le restaure à son état d'origine dans l'inspecteur des DOM, donc il semble être la meilleure approche.
Vous devriez penser JS pour le comportement, et CSS pour les bonbons visuels autant que possible. En changeant un peu votre HTML:
<td class="post"> <a class="p-edit-btn" href="#" onclick="showStuff(this.parentNode);return false;">Edit</a> <span id="answer1" class="post-answer"> <textarea rows="10" cols="115"></textarea> </span> <span class="post-text" id="text1">Lorem ipsum ... </span> </td>
Vous pourrez passer d'une vue à l'autre simplement en utilisant les règles CSS:
td.post-editing > a.post-edit-btn, td.post-editing > span.post-text, td.post > span.post-answer { display : none; }
Et le code JS qui bascule entre les deux classes
<script type="text/javascript"> function showStuff(aPostTd) { aPostTd.className="post-editing"; } </script>
Vous pouvez utiliser la propriété cachée de l'élément:
document.getElementById("test").hidden=true; document.getElementById("test").hidden=false
Bien que cette question ait été répondu plusieurs fois auparavant, j'ai pensé que je lui ajouterais une réponse plus complète et plus solide pour les futurs utilisateurs. La réponse principale résout le problème, mais je crois qu'il est préférable de connaître certaines des différentes façons de montrer / masquer les choses.
.
C'est la façon dont je l'ai fait jusqu'à ce que j'ai trouvé certaines de ces autres façons.
Javascript:
$("#element_to_hide").css("display", "none"); // To hide $("#element_to_hide").css("display", ""); // To unhide
Avantages:
Les inconvénients:
$("#element_to_hid").css("display", "inline");
Sinon, il sera par défaut de "bloc" ou quoi d'autre qu'il sera contraint. Exemple: https://jsfiddle.net/4chd6e5r/1/
.
Tout en configurant l'exemple pour celui-ci, j'ai rencontré des défauts sur cette méthode qui rendent cela très peu fiable.
Css / Javascript:
.hidden {display:none} $("#element_to_hide").addClass("hidden"); // To hide $("#element_to_hide").removeClass("hidden"); // To unhide
Avantages:
$(".hidden")
. Les inconvénients:
Exemple: https://jsfiddle.net/476oha8t/8/
.
Javascript:
$("element_to_hide").toggle(); // To hide and to unhide
Avantages:
Les inconvénients:
Exemple: https://jsfiddle.net/cxcawkyk/1/
.
Javascript:
$("#element_to_hide").hide(); // To hide $("#element_to_hide").show(); // To show
Avantages:
Les inconvénients:
Exemple: https://jsfiddle.net/k0ukhmfL/
.
Dans l'ensemble, je dirais le meilleur pour être caché () / show () à moins que vous ne l'ayez spécifiquement besoin d'être un basculeur. J'espère que vous avez trouvé cette information utile.
Créez simplement des méthodes de cache et de démonstration pour tous les éléments, comme suit
Element.prototype.hide = function() { this.style.display = 'none'; } Element.prototype.show = function() { this.style.display = ''; }
Après cela, vous pouvez utiliser les méthodes avec les identifiants d'éléments habituels comme dans ces exemples:
document.getElementByTagName('div')[3].hide(); document.getElementById('thing').show();
ou:
<img src="removeME.png" onclick="this.hide()">
Je recommande Javascript, car c'est relativement rapide et plus malléable.
<script> function showStuff(id, text, btn) { document.getElementById(id).style.display = 'block'; // hide the lorem ipsum text document.getElementById(text).style.display = 'none'; // hide the link btn.style.display = 'none'; } </script> <td class="post"> <a href="#" onclick="showStuff('answer1', 'text1', this); return false;">Edit</a> <span id="answer1" style="display: none;"> <textarea rows="10" cols="115"></textarea> </span> <span id="text1">Lorem ipsum Lorem ipsum Lorem ipsum Lorem ipsum</span> </td>