Bonjour,
En réalité mon code n'a pas problème il fonctionne.
C'est un code que j'ai trouvé sur le net.
Mais mon seul soucis c'est que je n'arrive pas à le comprendre et donc à l'expliquer
Ce que j'ai compris c'est que à la première ligne de ce code, je séléctionne les ancres qui ont un attribut qui contient # (et donc les ancres qui cible un id) mais que cet attribut ne soit pas seulement un #
En regardant sur internet j'ai pas trop compris la suite.
Que fait exactement le reste du code, j'ai compris intuitivement qu'il s'agit d'une animation mais ça s'arrête là.
$('a[href*=#]:not([href=#])').click(function () {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - 132
}, 2000);
return false;
}
}
});
Voici le code au complet :
<script type="text/javascript">
$(function () {
var nb_valide = 0;
var nb_invalide = 0;
var nb_checkbox = $('input[type=checkbox]').length;
$('input[type=checkbox]').click(function(){
if($(this).hasClass('valide')) {
if (this.checked == true) {
nb_valide ++;
} else {
nb_valide --;
}
} else if ($(this).hasClass('invalide')) {
if (this.checked == true) {
nb_invalide ++;
} else {
nb_invalide --;
}
}
var percent_valide = (nb_valide*100) / (nb_invalide + nb_valide)
var percent_invalide = (nb_invalide*100) / (nb_invalide+nb_valide)
$('#nb_valide').text(nb_valide + ' soit ' + Math.round(percent_valide) + ' %');
$('#nb_invalide').text(nb_invalide + ' soit ' + Math.round(percent_invalide) + ' %');
})
$('#submit_qcm').click(function(e){
e.preventDefault();
})
$('a[href*=#]:not([href=#])').click(function () {
if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) + ']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top - 132
}, 2000);
return false;
}
}
});
});
</script>