[Javascript] Appeler plusieurs fonctions...

Fermé
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - Modifié par Kopros le 15/04/2010 à 12:20
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 15 avril 2010 à 13:34
Salut à tous

Si je viens vous consulter c'est parce que j'ai beau regarder mon code dans tous les sens, je n'arrive pas à voir ce qui cloche. Alors c'est une fonction en javascript qui fait pas ce que je voudrais. En fait, c'est comme si la fonction n'était pas appelée...

Voici le code en question :

Entre <head> et </head>
<script type="text/javascript"> 
//(diverses fonctions qui marchent à merveille) 
function grisett(id1,id10) 
{ 
//fonction appelée dans le onload,  qui marche bien et qui sert à griser du texte et des input 
} 

function checkq(quest){ 

//c'est la fonction qui marche pas. J'ai laissé juste une ligne pour tester (le reste est commenté) . Cette ligne fonctionne très bien dans d'autres fonctions. Elle met en noir le texte grisé avant. 

 document.getElementById('q'+quest).style.color = 'black'; 

} 

</script>


Le <body> :
<body onload="grisett(1,25);checkq(4);">


Entre <body> et </body> :
<div id="q4">Mon texte qui change de couleur</div>



Normalement, "Mon texte qui change de couleur" est en noir quand je viens de charger la page. Pourtant, il reste en gris (il est grisé par la fonction "grisett").

Et là ça fait des plombes que je scrute le code à la recherche d'erreurs, que je fais différents tests, mais à chaque fois c'est comme si la fonction "checkq" n'existait pas...

Pouvez-vous m'aider ?


A voir également:

2 réponses

Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
Modifié par Kopros le 15/04/2010 à 12:11
Bon je viens de faire un test, quand j'appelle ma fonction avec un événement (onfocus sur un input de type texte) alors là ça marche.

J'ai même décommenté toute la fonction en question, et y'a tout qui marche bien.
Le seul truc, c'est que je ne parviens pas à l'appeler au chargement de la page.

Existe-t-il un autre moyen que le onload du body pour appeler une fonction une fois la page chargée ?


Edit : en fait ça marche si j'appelle la fonction une seule fois, genre "checkq(1,1);" mais si je veux l'appeler plusieurs fois là y'a plus rien qui fonctionne... "checkq(1,1);checkq(2,1);" ça marche pas EDIT : dans ce cas là, "checkq(1,1);" est appelé comme il faut, mais "checkq(2,1);" n'est pas appelé.



Beurdel j'y comprends plus rien...
0
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 89
15 avril 2010 à 13:34
Je up et en même temps je reformule ma question...
Dans la même page j'ai ces deux fonctions :

var namerep = '0';
var i=0;

function degrise(id,q)
{
	document.getElementById(id).disabled=false;
	document.getElementById('id'+id).style.color = 'black';
	document.getElementById('q'+q).style.color = 'black';
}


function checkq(quest,rep){
	document.getElementById(rep).disabled=false; //on permet aux radios de la question d'être cochés
	document.getElementById(rep).checked=true; //on coche la réponse déjà donnée
	document.getElementById('q'+quest).style.color = 'black'; //on dégrise le texte de la question
	for (i=1;i<=25;i++){
		namerep = document.getElementById(i).getAttribute('name'); //récupération du name de chaque radio pr toutes les qcm
		if (namerep==quest){
			document.getElementById(i).disabled=false; //on dégrise les radios de la question
			document.getElementById('id'+i).style.color = 'black'; //dégrisage du texte des réponses
		}
	}
}



Pourquoi ma fonction "degrise()" je peux l'appeler autant de fois que je veux ça va toujours fonctionner, alors que ma fonction "checkq()" si je l'appelle plus d'une fois y'a que le 1er appel qui est pris en compte ????


Je me suis pris la tête sur ce pb toute la matinée, je serai très reconnaissant si quelqu'un peut me dépêtrer de ça.
0