Zone texte HTML de type tableau de donnée's mail

Le
Arnaud
Salut à tous

Je voudrait lire / ecrire des Zones Texte HTML avec des noms de type
tableau[i] par exemple qui permettent des calcules traitables par boucle

document.form_commande.T[0].value = document.form_commande.P[0].value *
document.form_commande.Q[0].value;
document.form_commande.T[1].value = document.form_commande.P[1].value *
document.form_commande.Q[1].value;
document.form_commande.T[2].value = document.form_commande.P[2].value *
document.form_commande.Q[2].value;


Avec T = Total P = Prix Q = quantité


Hors à priori une zone texte HTML ne peux pas avoir un nom de forme tableau
: document.form_commande.T[1].value n'est pas possible. Seul un nom constant
de type document.form_commande.T1.value est possible

Y a t'il une alternative pour pointer un nombre varaible de zone avec un
pointeur ??? Rien trouvé sur le web ni dans mes bouqins

Cordialement

Arnaud
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #1958500
Salut à tous

Je voudrait lire / ecrire des Zones Texte HTML avec des noms de type
tableau[i] par exemple qui permettent des calcules traitables par boucle


<script type="text/javascript">

function calc(num1, num2, op) {
num1 = num1*1;
num2 = num2*1;
var num = op==1? num1*num2 : num1+num2;
return Math.round(num*100)/100;
}

function calcul() {
var total = 0, Arts = 0, P, Q, E;
// Hop! les rangées des commandes du tableau
var T = document.getElementById('tabl');
T = T.getElementsByTagName('TBODY')[0];
T = T.getElementsByTagName('TR');
// boucle sur ces rangées
for(var i=0; i<T.length; i++) {
// hop! les cellules de la rangée :
P = T[i].getElementsByTagName('TD');
// hop! la quantité :
Q = P[2].getElementsByTagName('INPUT')[0].value;
// si quantité alors calcul et affichage rangée
if(Q != '' && Q.length>0) {
Q = Q.replace(',','.')*1; // conversion chiffre Fr->US
E = calc(P[1].innerHTML.replace(',','.'), Q, 1);
total += E;
Arts += Q;
P[3].innerHTML = E.toString().replace('.',',') + ' Euros';
}
}
// la partie résultats
// si y a qque chose commandé
if(Arts >0 ) {
// les rangées du tFoot
T = document.getElementById('tabl');
T = T.getElementsByTagName('TFOOT')[0];
T = T.getElementsByTagName('TR');
E = T[0].getElementsByTagName('TH')[1];
E.innerHTML = calc(total, 1, 1).toString().replace('.',',') +
' Euros';
P = T[1].getElementsByTagName('TD');
P[2].innerHTML = Arts;
Q = calc(Arts, P[1].innerHTML.replace(',','.'), 1);
P[3].innerHTML = Q.toString().replace('.',',') + ' Euros';
E = T[2].getElementsByTagName('TH')[1];
E.innerHTML = calc(total, Q, 2).toString().replace('.',',') +
' Euros';
return true;
}
return false;
}

function RAZ() {
var T = document.getElementById('tabl');
T = T.getElementsByTagName('TBODY')[0];
T = T.getElementsByTagName('TR');
for(var i=0; i<T.length; i++) {
T[i].getElementsByTagName('TD')[3].innerHTML = '';
}
T = document.getElementById('tabl');
T = T.getElementsByTagName('TFOOT')[0];
T = T.getElementsByTagName('TR');
T[0].getElementsByTagName('TH')[1].innerHTML = '';
T[2].getElementsByTagName('TH')[1].innerHTML = '';
T = T[1].getElementsByTagName('TD')
T[3].innerHTML = T[2].innerHTML = '';
return false;
}
</script>
<style type="text/css">
table { empty-cells: show }
table td input { width: 30px }
</style>
</head>
<body>

<table id="tabl" border=1>
<caption>Commande Macs Ordinosaures</caption>
<thead>
<tr>
<th>intitulé</th><th>Prx U</th><th>Quant</th><th>Ss-Total</th>
</tr>
</thead>
<tbody>
<tr>
<td>Mac 7600</td><td>36,55</td><td><input name="Q1"></td><td></td>
</tr>
<tr>
<td>Mac 7200</td><td>31,85</td><td><input name="Q2"></td><td></td>
</tr>
</tbody>
<tfoot>
<tr><th colspan=3>Sous-total Commande :</th><th></th></tr>
<tr><td>Frais de port</td><td>12,90</td><td></td><td></td></tr>
<tr><th colspan=3>Total Commande :</th><th></th></tr>
<tfoot>
</table>
<input type=submit><input type=reset onclick="RAZ()">
</form>


Hors à priori une zone texte HTML ne peux pas avoir un nom de forme tableau
: document.form_commande.T[1].value n'est pas possible. Seul un nom constant
de type document.form_commande.T1.value est possible


si on préfère avec les ID :

var num1 = num2 = total = num = articles = 0, T;
var TR = document.form_commande.getElementsByTagName('TR');
for(var i=1; i<TR.length-3; i++) {
num1 = document.getElementById('Q_'+i).value*1;
// ou :
// num1 = document.form_commande['Q_'+i].value*1;
num2 = document.getElementById('P_'+i).innerHTML.replace(',','.')*1;
num = Math.round(num1*num2*100)/100;
total += num;
articles += num1;
T = document.getElementById('T_'+i);
T.innerHTML = num.toString.replace('.',',')+' euros';
}

<form>
<table>
<tr>
<td>intitulé</td>
<td>prix U</td>
<td>quantité</td>
<td>sous-total</td>
</tr>
<tr>
<td>blabla 1</td>
<td id="P_1">3,55</td>
<td><input name="Q_1" id="Q_1"></td>
</tr>
<tr>
<td>blabla 2</td>
<td id="P_2">325,75</td>
<td><input name="Q_2" id="Q_2"></td>
</tr>
...

Y a t'il une alternative pour pointer un nombre varaible de zone avec un
pointeur ???


le nombre variable sera le nombre de TR

--
sm

YD
Le #1958791
Je voudrait lire / ecrire des Zones Texte HTML avec des noms de type
tableau[i] par exemple qui permettent des calcules traitables par boucle

document.form_commande.T[0].value = document.form_commande.P[0].value *
[...]

Hors à priori une zone texte HTML ne peux pas avoir un nom de forme tableau
: document.form_commande.T[1].value n'est pas possible. Seul un nom constant
de type document.form_commande.T1.value est possible

Y a t'il une alternative pour pointer un nombre varaible de zone avec un
pointeur ??? Rien trouvé sur le web ni dans mes bouqins ...


Stéphane t'a donné une réponse possible... Mais plus simplement,
si tu donnes le même attribut name à des éléments de formulaire
(mettons name="T"), tu récupéreras par script un tableau où les
éléments seront indicés selon leur ordre d'apparition dans la
page HTML (donc document.form_commande.T[0] désignera le premier
élément nommé T dans la page).

Exemple minimal :

<html><head><title></title>
<script type="text/javascript">
function test(){
var f = document.forms[0];
var m = "T[0] = "+f.T[0].value;
m += "nT[1] = "+f.T[1].value;
m += "nT[2] = "+f.T[2].value;
alert(m);
}
</script>
</head>
<body>
<form onsubmit="return false;">
<input type="text" name="T">
<input type="text" name="T">
<input type="text" name="T">
</form></body></html>

--
Y.D.

Arnaud
Le #1964506
10 000 merci à vous deux ...

Le solution de YD fonctionne à merveille quand à la solution de SAM je vais
l'étudier de pret car je n'ai pas encore le niveau suffisant en javascript
pour l'utiliser tel que ...

Cordialement

Arnaud


"Arnaud" 47ef9e5c$0$21144$
Salut à tous

Je voudrait lire / ecrire des Zones Texte HTML avec des noms de type
tableau[i] par exemple qui permettent des calcules traitables par boucle

document.form_commande.T[0].value = document.form_commande.P[0].value *
document.form_commande.Q[0].value;
document.form_commande.T[1].value = document.form_commande.P[1].value *
document.form_commande.Q[1].value;
document.form_commande.T[2].value = document.form_commande.P[2].value *
document.form_commande.Q[2].value;


Avec T = Total P = Prix Q = quantité


Hors à priori une zone texte HTML ne peux pas avoir un nom de forme
tableau : document.form_commande.T[1].value n'est pas possible. Seul un
nom constant de type document.form_commande.T1.value est possible

Y a t'il une alternative pour pointer un nombre varaible de zone avec un
pointeur ??? Rien trouvé sur le web ni dans mes bouqins ...

Cordialement

Arnaud






SAM
Le #1965271
10 000 merci à vous deux ...

Le solution de YD fonctionne à merveille


donc je n'ai absolument pas compris ce que tu appelais des
"Zones Texte HTML"
:-(
.. en fait, de bêtes champs de texte (text-field) (ou input text)

quand à la solution de SAM je vais
l'étudier de pret car je n'ai pas encore le niveau suffisant en javascript
pour l'utiliser tel que ...


Tu peux aussi bien jeter tt de suite.

"Arnaud" 47ef9e5c$0$21144$

Je voudrait lire / ecrire des Zones Texte HTML avec des noms de type
tableau[i] par exemple qui permettent des calcules traitables par boucle

Hors à priori une zone texte HTML ne peux pas avoir un nom de forme
tableau : document.form_commande.T[1].value n'est pas possible.




Publicité
Poster une réponse
Anonyme