Comment faire pour afficher/masquer les divs quand sélectionnez options utilisateur clique sur
J'ai une boîte de sélection et souhaitez afficher un texte d'aide caché dans un div lorsque vous cliquez sur une option:
<select onchange="optionCheck()" multiple="multiple" name="test" id="options" size="15" class="form-select">
<option value="1">option 1</option>
<option value="2">option 2</option>
</select>
<div id="help1" style=visibility:hidden>help text 1</div>
<div id="help2" style=visibility:hidden>help text 2</div>
<script type="text/javascript">
function optionCheck(){
var option = document.getElementById("options").value;
if(option == "1"){
document.getElementById("help1").style.visibility ="visible";
document.getElementById("help2").style.visibility ="hidden";
}
if(option == "2"){
document.getElementById("help2").style.visibility ="visible";
document.getElementById("help1").style.visibility ="hidden";
}
}
</script>
Comment puis-je créer une simple boucle donc je n'ai pas d'écrire "si" énoncés pour chaque option?
document.getElementById(option).style.visibility ="visible";
n'est pas le javascript et moi de ne pas obtenir le long bien 😉
Aussi, est-il un moyen simple pour masquer toutes les autres divs lorsqu'une option est sélectionnée?
tout d'abord, ce n'est pas une bonne pratique pour définir vos événements dans votre code html. Ces jours, il ya de bonnes solutions de rechange disponibles (tous les définissant dans votre javascript) et cela repose sur une chaîne de prise en
Ensuite, vous devez placer des guillemets autour de
Sont tous de vos options va être numérotées et la div sera donné id de "help_" où le trait de soulignement est un nombre correspondant?
oui, ils sont tous comptés comme ça
eval
ed, et c'est juste pas bon.Ensuite, vous devez placer des guillemets autour de
visibility:hidden
. Il peut ne pas casser votre code en ce moment, mais ce n'est aucune raison de le faire comme cela. Vous avez juste ne faut pas utiliser les propriétés de style, mais nous ferons semblant de ne pas voir que.Sont tous de vos options va être numérotées et la div sera donné id de "help_" où le trait de soulignement est un nombre correspondant?
oui, ils sont tous comptés comme ça
OriginalL'auteur uwe | 2012-04-21
Vous devez vous connecter pour publier un commentaire.
Voici comment je ferais:
D'abord, je suis assez paresseux, et je ne veux pas de type style="visibility: hidden;" sur chacun de ces divs. Il est plus facile de cacher tout cela à la fois avec les CSS:
HTML:
CSS:
Nous pouvons maintenant travailler sur le Javascript, un peu plus générique:
Et qui devrait faire l'affaire!
Si vous avez des questions sur le code ci-dessus, je serais heureux d'y répondre.
helpDiv.style.display = "inline-block";
est également une option. Juste mes deux cents.OriginalL'auteur Dan M
Je recommande l'utilisation de certaines classes CSS pour masquer/afficher les divs. Puis le JavaScript juste besoin de définir l'attribut de classe pour chaque div.
Cette solution fonctionne toujours si vous sélectionnez plus d'une option.
HTML:
CSS:
JavaScript:
Ici est un jsFiddle à démontrer: http://jsfiddle.net/willslab/3N9pm/9/
J'espère que ça aide!
Ok, après quelques essais, cela devrait le faire.
OriginalL'auteur Will Klein
Consultez l'modifié le code HTML et JavaScript:
HTML:
JAVASCRIPT:
OriginalL'auteur Sukhjeevan
son meilleur, pour envelopper les styles css avec des guillemets:
OriginalL'auteur undefined
Au lieu de
getElementById(option)
, essayez quelque chose commegetElementById("help" + option)
.getElementById("help" + option)
?L'affiche dit:
document.getElementById(option).style.visibility ="visible";
ne fonctionne pas. En partie, au moins, c'est parce queoption
est "1" ou "2", alors que l'IDENTIFIANT de l'élément est "help1" ou "help2". Donc, essayez de"help" + option
plutôt que de simplementoption
.cool, cela a fonctionné. Comment puis-je masquer tous les autres divs lorsque l'on a été sélectionné?
Pseudo-code (je ne suis pas totalement javascriptish sur le dessus de ma tête):
for (i = 1; i <= numOptions; ++i) { if (i == option) { visibilityValue = "visible"; } else { visibilityValue = "hidden"; } document.getElementById("help" + option).style.visibility = visibilityValue; }
... et sans doute que vous avez précédemment mis "numOptions" pour 2 (ou quelle que soit la valeur appropriée est)OriginalL'auteur zognortz
vous pouvez essayer avec l'opérateur ternaire en javascript:
Cela permettra d'éviter les multiples si les déclarations
OriginalL'auteur UVM