Vous pouvez garder dans l'attribut onclick
, mais il est généralement plus facile à gérer éclaté dans un script séparé:
<span>
<input type="checkbox" tabindex="12" value="1" name="salgsvilkar" id="Checkbox2"/>
<label for="Checkbox2">Salgs- og leveringsvilkår er lest og akseptert</label>
</span>
<script type="text/javascript">
document.getElementById('Checkbox2').onclick= function() {
var s= this.parentNode.style;
s.backgroundColor='#E5F7C7';
s.border='solid blue 1px;';
};
</script>
J'ai utilisé this.parentNode
pour obtenir l'empan autour de l'objet sur lequel on cliquait, pour supprimer l'ID supplémentaire.
Notez que puisque cela ne détecte que le clic, Si vous cliquez à nouveau pour désélectionner la case, l'intervalle restera toujours en surbrillance.
De même, n'utilisez pas le format à fermeture automatique XHTML />
à moins que vous n'écriviez réellement un document XHTML. Les valeurs d'attribut sans guillemets comme tabindex=12
ne sont pas valides dans XHTML.
re: Commentaire:
Mais plus loin, que puis-je faire pour revenir si elle est déclipsée?
Pour le rendre plus facile à manipuler de revenir, je voudrais aller aux classes:
<style type="text/css">
.highlight {
background: #E5F7C7;
border: solid blue 1px;
}
</style>
...same markup...
<script type="text/javascript">
document.getElementById('Checkbox2').onclick= function() {
var that= this;
setTimeout(function() {
that.parentNode.className= that.checked? 'highlight' : '';
}, 0);
};
</script>
Juste enlever la classe quand this
n'est pas checked
réinitialisera le style à ce qu'il était avant, sans avoir se souvenir des anciennes valeurs de fond et de frontière.
À quoi sert le setTimeout
? Eh bien, quand l'événement onclick
se produit, vous venez de cliquer sur la case à cocher, et il n'a pas encore basculé son contrôle. En effet, si vous return false
vous empêchez la case à cocher d'être changé du tout. Nous demandons donc au navigateur de nous rappeler dans un tic, après que l'action par défaut pour le clic de la case à cocher s'est produite. (Par conséquent, nous devons préserver la valeur de this
, qui serait assombrie par une nouvelle, inutile this
dans la fonction de temporisation.)
onclick
est vraiment le mauvais événement à l'aide d'ici, il devrait être onchange
. Cependant, vous verrez généralement onclick
utilisé à la place parce qu'il y a un bug dans IE où il ne déclenche pas onchange
tant que vous n'avez pas coché la case.
Merci, j'utilise xhtml, copié un code de case à cocher précédent d'un projet sur lequel j'ai travaillé auparavant. Je vais l'enlever. Et c'est une boîte d'acceptation des conditions, il suffit donc de cliquer une fois. Mais plus loin, que puis-je faire pour le rétablir s'il n'est pas cliqué? – Kyle
Dans la fonction ajouter si (this.checked) { /* jeu de styles */ } else { /* supprimer des styles * /} – RoToRa
C'est une réponse étonnamment complète, même mon esprit non JS permis comprend, Merci beaucoup! – Kyle