IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

ajouter une ligne dans un tableau et afficher la valeur d'une variable


Sujet :

JavaScript

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut ajouter une ligne dans un tableau et afficher la valeur d'une variable
    Bonjour,

    Je ne suis pas une pro du développement et j'ai un petit soucis pour une histoire de variable et de tableau.

    Le contexte
    Sur une appli web j'ai une page asp qui permet à l'utilisateur d'afficher le contenue d'une base de donnée et de faire des modifications dessus.

    A la fin de mon formulaire j'ai un tableau qui reprend les infos de contact, j'affiche de le nom +n° de tel+n° de portable du 1er contact, l'utilisateur peut alors clicker sur un bouton pour faire apparaitre une nouvelle ligne de contact


    a l'événement onclick la fonction AjoutContact() est appelée.

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    var numLigne=1;
     
    function AjoutContact()
    {
    var sHTML;
     
    // Incrementation de lignes dans la table
    numLigne++;
     
    //test
    var contact="strContact"+numLigne;
    alert(contact);
     
    //boucle pour l'insertion de cellules dasn chaque nouvelle igne
    	//je limite à 3 lignes suppl.
    	if  (numLigne < 5)
    	{
     
    	//insertion de lignes dans la table
    	oRow= document.getElementById('TableContact').insertRow(-1);
    		for (i=0; i<6; i++)
    		{
    			var oCell = oRow.insertCell(i);
     
    			//Utilisation du switch pour insertion de valeurs différentes selon les cellules
    			switch (i)
    			{
    				case 0 :
    					sHTML="<font color=\"#A36732\"> Nom contact "+numLigne+" :";
    					break;
    				case 1 :
    					sHTML="<input type=\"texte\" style={width:100%} name=\"CONTACT"+numLigne+"\" value=\"test "+contact+"\">";
    					break;
    				case 2	:
    					sHTML="<font color=\"#A36732\">Tel"+numLigne+" :";
    					break;
    				case 3 :
    					sHTML="<input type=\"texte\" style={width:100%} name=\"TEL"+numLigne+"\" value=\"test"+numLigne+"\">";
    					break;
    				case 4	:
    					sHTML="<font color=\"#A36732\">Portable"+numLigne+" :";
    					break;
    				case 5 :
    					sHTML="<input type=\"texte\" style={width:100%} name=\"PORT"+numLigne+"\" value=\"test"+numLigne+"\">";
    					break;
    			}
     
    			//oCell.insertAdjacentHTML("beforeEnd", sHTML);
    			oCell.innerHTML = sHTML;
    		}	
    	}
    	else
    		alert("Vous avez atteint le nombre maximal de contacts");	
    }
    Le problème
    Mon problème se situe au niveau de la valeur de l'input type text qui est affiché dans les case 1, case 3 et case 5 car le nom de la variable qui contient la valeur change (strContact2 - strContact3 ect...) alors j'ai bien essayé de bidouille un truc genre contact="strContact"+numLigne et là effectivement j'ai le bon nom de varaible mais si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sHTML="<input type=\"texte\" style={width:100%} name=\"CONTACT"+numLigne+"\" value=\"<%= "+contact+"%>\">";
    et bien le <%= n'est pas interpréter ! donc àl'affichage j'ai comme valeur de mon input ++ trèèèèèèèès intéressant

    je vous met aussi le tableau et le bouton
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    <TABLE name="TableContact" id="TableContact" border="0"width="100%">	
    			<tr></tr>
    			<tr></tr>
    			<tr>
    				<td colspan=6 class="title">Contacts</td>
    			</tr>
    			<tr></tr>
    			<tr></tr>
    			<tr>
    				<td width="15%">
    					<font color="#A36732">Propriétaire :</font>
    				</td>
    				<td  colspan="5">
    <%
    					strProprio = StringHelper.replaceNull (strProprio, "");
    					strProprio = StringHelper.replaceSpecialChar (strProprio);
    %>
    					 <input name="PRIX" id="PROPRIO" type="text" value="<%=strProprio%>" maxlength="30" style={width:50%}>
    				</td>
    			</tr>
    			<tr>
    				<td width="15%">
    					<font color="#A36732">Nom contact 1 :</font>
    				</td>
    				<td width="30%">
    <%
    					strContact1 = StringHelper.replaceNull (strContact1, "");
    					strContact1 = StringHelper.replaceSpecialChar (strContact1);
    %>
    					 <input name="CONTACT1" id="CONTACT1" type="text" value="<%=strContact1%>" maxlength="30" style={width:100%}>
    				</td>
    				<td width="5%">
    					<font color="#A36732">Tel1 :</font>
    				</td>
    				<td width="20%">
    <%
    					strTel1 = StringHelper.replaceNull (strTel1, "");
    					strTel1 = StringHelper.replaceSpecialChar (strTel1);
    %>
    					 <input name="TEL1" id="TEL1" type="text" value="<%=strTel1%>" onblur="VerifTel(this)" maxlength="30" style={width:100%}>
    				</td>
    				<td width="10%">
    					<font color="#A36732">Portable1 :</font>
    				</td>
    				<td width="20%">
    <%
    					strPort1 = StringHelper.replaceNull (strPort1, "");
    					strPort1 = StringHelper.replaceSpecialChar (strPort1);
    %>
    					 <input name="PORT1" id="PORT1" type="text" value="<%=strPort1%>" maxlength="30" style={width:100%}>
    				</td>
    			</tr>	
    			<tr>
    				<td  colspan="6">
    					 <input type="button" value="Ajouter un contact" onclick="AjoutContact()" maxlength="30" style={width:30%}>
    				</td>	
    			</tr>	
    		</table>
    J'espère avoir été clair et surtout que quelqu'un pourra m'aider (allez je suis sur que ce n'est pas compliqué

    (désolé le text du code est tout collé à gauche!)

  2. #2
    Expert confirmé
    Avatar de emmanuel.remy
    Inscrit en
    Novembre 2005
    Messages
    2 855
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Novembre 2005
    Messages : 2 855
    Points : 4 045
    Points
    4 045
    Par défaut
    Salut,

    Tu écris
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sHTML="<input type=\"texte\" style={width:100%} name=\"CONTACT"+numLigne+"\" value=\"<%= "+contact+"%>\">";
    Déjà c'est <input type="text" , et non texte

    Ensuite, ta balise <%= ... %> est évaluée sur le server pas côté navigateur. D'où ton souci.

    ERE

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Points : 36 571
    Points
    36 571
    Par défaut
    Bonjour,
    Citation Envoyé par dede94 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sHTML="<input type=\"texte\" style={width:100%} name=\"CONTACT"+numLigne+"\" value=\"<%= "+contact+"%>\">";
    et bien le <%= n'est pas interpréter ! donc àl'affichage j'ai comme valeur de mon input ++ trèèèèèèèès intéressant
    Il s'agit d'une simple erreur (chrono)logique :
    Ton sHTML reçoit sa valeur lors de l'exécution du Javascript (sur le poste client).
    De même ta variable "contact" n'a de valeur qu'à ce moment là.
    Or ton code ASP (entre <%= et %>) a été interprété bien avant, sur le serveur.
    A un moment où "contact" ne représentait rien.

    A priori, si c'est en ASP que tu veux alimenter la value, il faut modifier ton code pour remplacer ta variable Javascript contact par une variable ASP. Et modifier également la syntaxe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     value=\"<%= ta_variable_ASP %>\"
    Sinon, il faut rester en pur Javascript (sans ASP) ...

    EDIT : Grilled by ERE

    A+

  4. #4
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    On dirait que tu n'as pas compris que l'ASP était interprété côté seveur: en gros ton navigateur reçoit des données html interprétées, c'est-à-dire sans <% .

    Javascript,lui est interprété par le navigateur, et donc si tu insères du code asp, bah le navigateur bah va essayer de l'afficher .

    Donc, pour faire cela, il vaut mieux passer par AJAX

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 4
    Points : 3
    Points
    3
    Par défaut oui mais alors comment faire?
    Bonjour,

    Merci pour vos reponses

    Oui effectivement je me doutais bien qu'il y avait un problème de serveur/client dans mon code !
    Par contre je n'ai pas bien compris ce que je pouvais faire pour y remédier....
    A priori, si c'est en ASP que tu veux alimenter la value, il faut modifier ton code pour remplacer ta variable Javascript contact par une variable ASP. Et modifier également la syntaxe
    Code :

    value=\"<%= ta_variable_ASP %>\"

    Sinon, il faut rester en pur Javascript (sans ASP) ...
    Moi je voudrais bien écrire value=\"<%= ta_variable_ASP %>\" mais le probleme c'est que le nom de ma variable ASP c'est strContac2 pour la ligne 2, strContact3 pour la ligne 3 ect... et je n'arrive pas à lui dire que lors de l'insertion de la première ligne la variable strContact change de nom....

    Donc, pour faire cela, il vaut mieux passer par AJAX
    Ajax connait pas...

    Concernant le input type="text" j'avais corrigé, bete erreur de saisie

  6. #6
    Membre émérite
    Avatar de supersnail
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 719
    Points : 2 793
    Points
    2 793
    Par défaut
    Bonjour,

    Tu as des cours bien faits ici: http://ajax.developpez.com/cours/

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/12/2009, 20h43
  2. Réponses: 1
    Dernier message: 12/12/2008, 17h06
  3. Réponses: 9
    Dernier message: 15/06/2008, 11h13
  4. ajout d'une ligne dans un tableau
    Par gup dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/12/2007, 09h14
  5. [vb6] Ajouter une ligne dans un tableau excel
    Par Asdorve dans le forum VB 6 et antérieur
    Réponses: 13
    Dernier message: 13/06/2006, 16h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo