Bonjour =)
Je viens de 'finir' ce que je cherche à faire depuis un bon moment ! Malheureusement ça ne fonctionne que sous Firefox =( Et moi je voudrai que ça fonctionne sous IE !
Je vous explique :
J'ai une action 'onclick' qui appelle plusieurs fonctions :
Mon 'sect1' qui correspond à la TVA à lui même un display:none car c'est également un sous-menu; mais son affichage ne m'a pas poser de problème car il n'y avait aucun calcul nécessaire, j'ai donc utilisé des propriétés CSS.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <tr id="sect1" style="display:none"> <!-- TVA --> <td class="RowHeader10" nowrap> <a onclick="javascript:changerSigne(1);afficherCacher('divcalculTOTAL_TVA');afficherCacher('divaffichageTOTAL_TVA');calcul_TVA_TOTAL(); aff_tva('-1', '<?php echo $sens; ?>')"><img name="image" src="img/plus.GIF"></a> TVA</td> <td class="Value10" nowrap><?php //echo number_format($achat->qte_total, 0, ',', ' '); ?></td> <td class="Value10" nowrap><?php //echo number_format($achat->montant_total, 2, ',', ' ').' €'; ?></td> <td class="Value10" nowrap><?php //if(isset($achat->montant_total) and $achat->montant_total != 0) echo number_format(($achat->montant_total/$achat->montant_total)*100,3).'%'; ?></td> </tr>
En résumé j'ai : TOTAL -> TVA, Prix, Grossiste
Et dans chacun de ces sous-menus j'ai d'autres sous-menus, mais qui nécessitent, eux, des calculs (et c'est eux qui me font tout planter^^).
J'ai aussi, bien sûr, des div qui me servent à afficher mon résultat :
Ma fonction changerSigne() sert à changer mon bouton '+' en '-' et vis versa (c'est un tableau déroulant '+' '-').
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <div id="divcalculTOTAL_TVA" style="display:none"></div> <div id="divaffichageTOTAL_TVA" style="display:none"></div>
Et ma fonction afficherCacher() affiche ou cache mon sous-menu.
JS :
Mes deux autres fonctions servent à calculer et remplir le tableau qui va s'afficher avec les valeurs calculées.
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 // affichage des sous-menus function afficherCacher(element){ if(document.getElementById(element).style.display == 'none') document.getElementById(element).style.display = 'block'; //afficher else if(document.getElementById(element).style.display == 'block') document.getElementById(element).style.display = 'none'; //cacher } // changement de signe var tab_image = new Array(2); for (var i=0; i< tab_image.length;i++) tab_image[i]= new Image(); tab_image[0].src="img/plus.GIF"; tab_image[1].src="img/moins.GIF"; var n=0; function changerSigne(indice) { n= ++n; if(n == tab_image.length) n=0; window.document.image[indice].src = tab_image[n].src; }
J'ai donc dans mon fichier JS :
Et mon fichier ajax.php :
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
26
27
28
29
30
31
32
33
34
35
36 function getXhr(url) { if(window.XMLHttpRequest) // Firefox et autres xhr_object = new XMLHttpRequest(); else if(window.ActiveXObject) // Internet Explorer xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); else // XMLHttpRequest non supporté par le navigateur alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); xhr_object.open("GET", url, false); xhr_object.send(null); if(xhr_object.readyState == 4) { return(xhr_object.responseText); } else { return(false); } } var calcul=false; function calcul_TVA_TOTAL() { if(calcul==false){ calcul=true; retourJS = getXhr('page/ajax.php?action=calculTVATOTAL'); // On se retrouve avec le résultat de la fonction PHP contenue dans ajax.php qui va se lancer si le test ($_GET['action'] == 'calculTVATotal') est vrai this.document.getElementById('divcalculTOTAL_TVA').innerHTML = retourJS; } else{} } function aff_tva($h, $sens) { retourJS2 = getXhr('page/ajax.php?action=aff_tva&h='+$h+'&sens='+$sens); this.document.getElementById('divaffichageTOTAL_TVA').innerHTML = retourJS2; }
Voilà, tout cela marche a peu près convenablement sous Firefox (je dis a peu près car les tableaux s'affichent sans prendre en compte la largeur de mon tableau initial, mais au moins ils s'affichent !),
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 <?php require_once('../connexion.php'); require_once('../classes/cls_achat.php'); @session_start(); if(isset($_SESSION['debut_achat'])&&isset($_SESSION['fin_achat'])&&isset($_SESSION['achat'])){ if(($_SESSION['debut_achat'] == $_SESSION['debut'])&&($_SESSION['fin_achat'] == $_SESSION['fin'])){ $achat = $_SESSION['achat']; } else{ $_SESSION['debut_achat'] = $_SESSION['debut']; $_SESSION['fin_achat'] = $_SESSION['fin']; $achat = new Achat($_SESSION['debut_achat'],$_SESSION['fin_achat']); $_SESSION['achat'] = $achat; } } else{ $_SESSION['debut_achat'] = $_SESSION['debut']; $_SESSION['fin_achat'] = $_SESSION['fin']; $achat = new Achat($_SESSION['debut_achat'],$_SESSION['fin_achat']); $_SESSION['achat'] = $achat; } if($_GET['action'] == 'calculTVATOTAL') { $achat->calcul_TVA_TOTAL(); } if($_GET['action'] == 'aff_tva') { $achat->aff_tva($_GET['h'],$_GET['sens']); } if($_GET['action'] == 'calculPrixTOTAL') { echo 'calcul'; $achat->calcul_Prix_TOTAL(); } if($_GET['action'] == 'aff_prix') { echo 'aff'; $achat->aff_prix($_GET['h'],$_GET['sens']); } ?>
mais sous IE j'ai un souci, toutes mes valeurs s'affichent au dessus de mon tableau déroulant '+' '-'
J'ai d'abord pensé à un problème dans les balises <tr> <td>, mais non, a priori elles sont toutes bien placées
HELP ME
Partager