Bonjour,
Cela fait 3 jours que je traîne ce boulet et je ne comprend pas pourquoi cela ne fonctionne pas... J'ai bien chercher dans ce forum ou sur Google si un début de réponse pouvait m'aider, mais je n'ai rien trouvé... Je me tourne donc vers vous.
Contexte : je génère en PHP un morceau de page WEB que j'insère dans une DIV de ma page principale; ce morceau de code généré est sous cette forme :
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <td colspan="2" style="border:none;"> <input type="checkbox" name="mois_1" id="mois_1" value="1" onchange="MaJProgMois(value, 1);" checked="checked">Janvier <input type="checkbox" name="mois_1" id="mois_2" value="2" onchange="MaJProgMois(value, 1);" checked="checked">Février ... <input type="checkbox" name="mois_1" id="mois_11" value="11" onchange="MaJProgMois(value, 1);">Novembre <input type="checkbox" name="mois_1" id="mois_12" value="12" onchange="MaJProgMois(value, 1);">Décembre </td>
Dans ma page principale - qui à donc "chargé" ce morceau de code - j'ai plusieurs fonctions JavaScript qui réalisent différentes choses, dont une qui est appelé si une checkbox a chang d'état (cochée ou décochée - on le voit dans le code ci-dessus : "onchange..." qui appel la fonction MaJProgMois() ).
Ce code JavaScript est le suivant :
Mon problème est que l'évaluation de ma chaine "document.getElementsByName("mois_1")[1].checked" par exemple, me renvoie toujours l'état initial de la case tel que décrit dans le code généré en PHP et non l'état que l'utilisateur donne à la checkbox.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 function MaJProgMois(valeur, id) { var str = "document.getElementsByName('mois_"+id+"')[" + valeur + "].checked"; var check = eval(str); alert(str); alert(check); if (window.XMLHttpRequest) { xmlhttp = new XMLHttpRequest(); } else if (window.ActiveXObject) { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } else { alert("Votre navigateur ne supporte pas les fonctionnalités AJAX (=objets XMLHTTPRequest)..."); return; } xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { var retour = xmlhttp.responseText; document.getElementById("Debug").innerHTML = retour; } } xmlhttp.open("GET", "getMaJProgMois.php?mois="+valeur+"&index="+id+"&check="+check, true); xmlhttp.send(); }
Je ne comprend pas pourquoi ! C'est pourtant "simple" JavaScript mais là, je ne vois pas pourquoi cela ne fonctionne pas... alors que dans la console JavaScript de mon Firefox, lorsque je lance un document.getElementsByName('mois_1')[1].checked par exemple, il me renvoie bien le bon booleen "true" ou "false"...
Quelqu'un aurait il une idée ou une piste à me soumettre ? et en même temps sur quoi devrais-je partir pour avoir la bonne valeur dès qu'un clic change la checkbox
En vous remerciant tous,
Thierry
Partager