Prebleme : javascript et variable

Résolu/Fermé
xhunter - 15 juil. 2009 à 13:17
 xhunter - 23 juil. 2009 à 14:57
Bonjour,
je souhaite réaliser une page web ( divisée en frame mais c est pas le probleme ici :P) qui en fonction du nombre d'enfant n ( var nbenf globale que je récupere d une page précédente ) afficher une ou n ligne proposant de remplir un champ text et une checkbox par ligne. puis renvoyer ces valeurs dans une autre frame
Je gere l'affichage par un innerHtml mais je n'arrive pas a bien codé les name des input dans ma boucle :

var nb=window.parent.menu.nbenf;
function Chargement(){
for(var i=1;i<=nb;i++){
var page='enf'+i;
document.getElementById(page).innerHTML="Revenu de l'enfant "+i+" : "+"<input name=salaire type=\"text\" size=\"15\" maxlength=\"8\">"+" €"; // ce(s) input doit avoir le name en fonction du numero de l'enfant...
}
}

function valide(){
for(var i=1;i<=nb;i++){
var salenf='revenf'+i;
window.parent.menu.salenf=document.formenf.salaire.value;
alert(window.parent.menu.salenf);
}
parent.corps.location.href="recap.html";
}
SI ce n'est pas clair, demandez plus amples explications, je suis vraiment bloqué la.. MERCI

11 réponses

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
22 juil. 2009 à 15:57
Bonjour,
Tiens, à mon avis, ça devrait te suffire. J'ai commenté pour que tu comprennes mieux.
Le fichier sera accessible à l'adresse suivante: http://dl.free.fr/getfile.pl?file=/bBTym7aj

Ps: à chaque fois qu'une frame est créée, un chaton meurt quelquepart alors arrête...
(cf kitty dies, buzz du passé sur le net...)
1
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
16 juil. 2009 à 11:38
var page='enf'+i;
des simple guillemet avec en dessous des doubles guillements avec des antislashs au lieu d'utiliser de simple guillemet...

Pourquoi la valeur de name n'est pas entre guillemet? Avec ça marcherait sans doute mieux. pourquoi mettre un plus entre du texte saisi et du texte saisi?

document.getElementById(page).innerHTML='Revenu de l'enfant '+i+' : <input name="salaire" type="text" size="15" maxlength="8"> €';

Enfin, utilisateur non enregistre est surement = ce que j'écris ne sera jamais lu par la personne concernée...
0
Peut etre pas enregisré mais bien content d avoir une reponse !
les simples guillemets puis les doubles -> copié collé d autres solutions trouvées sur le net
Le mieux c est de ne mettre qu'un seul type de guillemets, non ?

document.getElementById(page).innerHTML='Revenu de l'enfant '+i+' : <input name="salaire" type="text" size="15" maxlength="8"> €';

je n'avais pas mis de "" sur le name car je desirerai avoir un nom en fonction du numero de l enfant si je peux m exprimer ainsi : salaire1, salaire2... en fonction du nombre d enfant "i". Et il me semble que pour concaténer deux chaines de caracteres avec ce "i" au milieu, il fallait faire comme ca ..??

Merci de ta réponse en tout cas
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
16 juil. 2009 à 14:26
Re

document.getElementById(page).innerHTML='Revenu de l'enfant '+i+' : <input name="salaire'+i+'" type="text" size="15" maxlength="8"> €';

Voila pour avoir un name dépendant du i tout en respectant les règles de l'html qui demande que la valeur du name soit entouré de guillemet.

Le mieux c est de ne mettre qu'un seul type de guillemets, non ? -> Souvent le simple guillemet suffit quand le code est propre. Mais si on peut utiliser les deux types de guillemets pour éviter des \, c'est mieux.
0
et les \ pour les guillemets c est a cause du innerHTML pour qu'il affiche mon input text ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
re,

j'ai incrusté ta ligne sauf qu'IE n'en veux pas.. lol Il attend un " ; " qui ne vient jamais, je crains que ce soit a cause des guillemets simple et double; dsl je n'ai que le debugger IE 6 la ou je suis . :(

document.getElementById(page).innerHTML='Revenu de l'enfant '+i+' : <input name="salaire'+i'" type="text" size="15" maxlength="8"> €';
j ai enlevé le + a droite du i qui ne servait plus a rien
0
Desesperé je m'auto-up...

ma fonction de création des lignes de formulaire au chargement de la page :

function Chargement(){
for(var i=1;i<=nb;i++){
var page='enf'+i;
document.getElementById(page).innerHTML='Enfant '+i+' : <input name="salaire'+i+'" type="text" size="15" maxlength="8"> € ';
}
}

Puis, vient la fonction qui est censée récuperer les variables salaire1/2/3/... puis renvoyer le resultat dans une autre frame , cependant, impossible de récuperer mes valeurs ... :( !

function valide(){
var totrev=0;
for(var i=1;i<=nb;i++){
var page='enf'+i;
totrev+=(document.getElementById(page).salaire'+i+');
}
alert(totrev);
window.parent.menu.revenf=document.formenf.totrev;
}
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
20 juil. 2009 à 13:41
est-ce que tu peux coller le bout de code html concernant les input de la première fonction pour savoir si ils sont bien écrits?
voir donner l'adresse ou on peut trouver la page, ça peut aider aussi.
0
Les input de la premiere fonction ..?
je pense que tu parles de celle la :

function Chargement(){
for(var i=1;i<=nb;i++){
var page='enf'+i;
document.getElementById(page).innerHTML='Enfant '+i+' : <input name="salaire'+i+'" type="text" size="15" maxlength="8"> € Statut :<input type="radio" name="coeffenf'+i+'" value="100" > Salarié <input type="radio" name="coeffenf'+i+'" value="70" >autres';
}
}

mais autant remettre tout le code :

<html>
<head>
<script type="text/javascript">
<!--
var page;
var revenfant;
var nb=window.parent.menu.nbenf;
salaireenfant = new Array();
coeffenfant = new Array();

function Chargement(){
for(var i=1;i<=nb;i++){
var page='enf'+i;
document.getElementById(page).innerHTML='Enfant '+i+' : <input name="salaire'+i+'" type="text" size="15" maxlength="8"> € Statut :<input type="radio" name="coeffenf'+i+'" value="100" > Salarié <input type="radio" name="coeffenf'+i+'" value="70" >autres';
}
}

function valide(){
var totrev=0;
for(var i=1;i<=nb;i++){
var revenfant='salaire'+i;
var page='enf'+i;
//alert(document.getElementById(page).revenfant);
// totrev+=parseInt(document.getElementById(page).revenfant.value);
// totrev+=parseInt('enf'+i.revenfant);
}
//alert(totrev);
//window.parent.menu.revenf=document.formenf.totrev;
//parent.corps.location.href="recap.html";
}
//-->
</script>
</head>
<body onLoad="Chargement();" >
<form name="formenf">
<p>Ressources de vos enfants au cours des 12 derniers mois :</p>
<div id="enf1">
</div>
<div id="enf2">
</div>
<div id="enf3">
</div>
<div id="enf4">
</div>
<div id="enf5">
</div>
<div id="enf6">
</div>
<div id="enf7">
</div>
<div id="enf8">
</div>
<div id="enf9">
</div>
<div id="enf10">
</div>
<div id="enf11">
</div>
<div id="enf12">
</div>
<br><br>
<input type="button" onClick="valide()" value="Valider">
<FORM Name="back">
<Input type=button value="précédent" onclick="history.back();">
</FORM>
</form>
</body>
</html>

je n essaie de recuperer pour l'instant que les salaires, mais mon probleme et sa solution seront les memes pour les radio ensuite :)

merci de t'interesser a mon cas
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
21 juil. 2009 à 16:16
J'ai toujours pas bien compris ce que tu veux faire

Le fichier sera accessible à l'adresse suivante: http://dl.free.fr/getfile.pl?file=/T1atmETU

Moi ce que je vois ce j'ai uppé ça passe d'une frame dans l'autre.

Explique plus en détail ce que tu veux si tu veux plus d'aide. A la limlite, up ce que tu as (protège par un mdp si tu veux que ce soit confidentiel que tu m'envois par MP) et explique ce qui marche pas.
0
Bonjour,
je ne t'ai pas envoyé de mp car je en suis pas inscrit (honte sur moi :P)
je vais essayer de t'expliquer ce que je cherche a faire mais je pense que tu as malgre toi compri car ton code résoud quasiment mon soucis:
j'ai repris ton fichier et travaillé dans celui ci pour que ce soit plus simple.
- Je veux creer "dynamiquement" les lignes ou l'on entre le salaire et choisi la catégorie professionnelle de l'enfant ( ca c'est bon)
- Ensuite, je voudrais additionner les salaires en appliquant un coefficient sur le salaire de chaque enfant :
enfant 1 : salaire 30, salarié : coeff=100 -> salaire=30
enfant 2 : salaire 100, salarié : coeff=70 -> salaire=70
totrev=100

et faire le total dans la variable "totrev" ( je ne récupere pas les bonnes valeurs et coeff .. )
pour ensuite envoyer ce résultat dans une autre frame ( ca c'est pas le plus dur)

je te renvoi le fichier que j'ai modifié pour qu'il envoi le résultat "totrev" sur la seconde frame en validant : http://dl.free.fr/getfile.pl?file=/qzXYUOZl

merci beaucoup de ton aide :)
0
Un grand merci a toi , mon probleme est enfin résolu, je suis confronté a un autre soucis de transfert de ma variable totrev dans une autre frame ( non , j'aime pas les chatons ! xD) , mais ce n'est plus vraiment le sujet ici.
Merci a toi, j'ai utilisé ton code quasi-entierement, :)
0