InnerHTML [Résolu]

Signaler
Messages postés
35
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
22 mars 2010
-
Messages postés
35
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
22 mars 2010
-
Bonjour;
c'est la première foi que j'utilise innerHTML :



function Ajouter()
{
 var idp= fproduit.desi.options[fproduit.desi.selectedIndex].value;
 var des= fproduit.desi.options[fproduit.desi.selectedIndex].text;
 var qd= fproduit.qd.value;
 var pr= fproduit.prix.value;
 if(idp=="" || qd=="" || pr=="" || qd==0 || pr==0)
 {
  alert("Veuillez remplir tous les champs");
 }
 else
 {document.getElementById('ajout').innerHTML="<tr id="+idp+"><td>"+des+"</td><td>"+qd+"</td><td>"+pr+"</td><td>"+(qd*pr)+"</td></tr>";}
}

l'appel de la fonction ajouter() :
....

     ----

    des,
    qd,
    pr,
    m,
    
  

  

 

....
le problème c'est  au niveau de l'execution, rien ne s'affiche, normalement il faut afficher une ligne à la fin du tableau (dans la balise

) même un message d'erreur.
Aidez moi SVP. et merci.
a+

4 réponses

Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Hello,
innerHTML n'est pas conseillé pour tous les types d'éléments HTML.
Pour ton tableau, mieux vaut utiliser les fonctions insertRow et insertCell (et éventuellement appendChild pour ajouter des éléments à tes cellules).
Tchô.
Messages postés
152
Date d'inscription
dimanche 20 février 2005
Statut
Membre
Dernière intervention
17 janvier 2014
3
Je ne connais pas ton besoin mais tu peux passer ton identifiant en paramètre de ta fonction et l'affecter à ta ligne :

function Ajouter(id) {
var tr = document.createElement("tr");
tr.id = id;
}

ou encore utiliser une variable globale incrémentale :

var count = 0;

function Ajouter() {
var tr = document.createElement("tr");
  tr.id = "le_prefixe_de_ton_choix" + count;
count++;
}

A toi de voir de quelle façon tu souhaites récupérer ces identifiants ...

Petite remarque : la norme de codage déconseille les majuscules en début des noms de fonctions. Utiliser la norme suivante :
fonction maFonctionQuiFaitCeQueJeVeux()

Tchô.
Messages postés
35
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
22 mars 2010

Bonjour;
Oui, j'utilise normalement DOM, mais cette foi j'ai voulu ulisier  innerHTML pour donnais à chaque ligne <tr id=""> un identifiant que j'aurais besoin dans la suite de mon programme. je pense qu'avec  le DOM est imposible de définir a chaque ligne <tr> un identifiant :
voilà mon code avec la méthode DOM, mais il reste toujours incomplet, parceque j'aurais besoin de donner a chaque <tr id=""> un identifiant :

function Ajouter()
{
 var idp= fproduit.desi.options[fproduit.desi.selectedIndex].value;
 var des= fproduit.desi.options[fproduit.desi.selectedIndex].text;
 var qd= fproduit.qd.value;
 var pr= fproduit.prix.value;
var tr = document.createElement("tr");
var td = document.createElement("td");
    var texte = document.createTextNode(des);
    td.appendChild(texte);
    tr.appendChild(td);
.....
document.getElementById("ajout").appendChild(tr);
}
si vous avez une idée pour compléter la fonction Ajouter(), merci d'avance.
a+
Messages postés
35
Date d'inscription
samedi 29 septembre 2007
Statut
Membre
Dernière intervention
22 mars 2010

Merci bcp, c'est exactement ce que j'étais entrain de chercher (
tr.id = id
) .
Merci aussi pour la remarque .
a+