Exploiter le DOM en JavaScript
Résolu/Fermé
Mallik-Macif
Messages postés
4
Date d'inscription
lundi 11 mars 2013
Statut
Membre
Dernière intervention
13 mars 2013
-
11 mars 2013 à 15:29
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 13 mars 2013 à 10:41
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 13 mars 2013 à 10:41
A voir également:
- Exploiter le DOM en JavaScript
- Telecharger javascript - Télécharger - Langages
- Javascript est activé mais ne fonctionne pas ✓ - Forum Réseaux sociaux
- Crush dom tom - Forum Consommation & Internet
- Node.js javascript runtime virus ✓ - Forum Virus
- Quand on allume un ordinateur ou un smartphone, le système d’exploitation est le programme qui se lance en premier et qui permet ensuite d’utiliser des applications. donnez le numéro d'un des systèmes d'exploitation. ✓ - Forum Linux / Unix
6 réponses
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
11 mars 2013 à 21:08
11 mars 2013 à 21:08
essaie en passant par childNodes (il faudra peut être descendre de deux niveaux tr->td->div ??
<script type="text/javascript"> function CAC_Montant(nomFormulaire) { var montant = 0; var res = 0; var f = document.getElementById(nomFormulaire); var longueur = f.length; for(var i=0; i<longueur; i++) { if(f.elements[i].checked){ { var fils = f.elements[i].childNodes; res = parseFloat(fils[8].getAttribute("title")); montant = res + montant; } } } return(montant) } </script>
Mallik-Macif
Messages postés
4
Date d'inscription
lundi 11 mars 2013
Statut
Membre
Dernière intervention
13 mars 2013
12 mars 2013 à 09:55
12 mars 2013 à 09:55
Merci d'avoir répondu =)
Je me suis renseigner sur le childNodes, j'ai donc tester avec le premier niveau puis en descendent au second niveau, mais la réponse est toujours la même
: 8 a la valeur null ou n'est pas un objet.
Je crois bien avoir tout essayer mais impossible d'atteindre ce deuxième niveau pour accéder aux div :/
Et quand j'essaie avec plusieurs getElementsByTagName j'ai également une erreur : cet objet ne gère pas cette propriété ou méthode
Voici plusieurs de mes test :
Toutes ces tentatives me renvoi une erreur. Et quand j'arrive à accéder au title de mon div, c'est seulement au 8eme de la page, jamais sur mon tr courant :(
Désolé pour le code en vrac, mais si ça peut inspirer autant le mettre =)
Je me suis renseigner sur le childNodes, j'ai donc tester avec le premier niveau puis en descendent au second niveau, mais la réponse est toujours la même
: 8 a la valeur null ou n'est pas un objet.
Je crois bien avoir tout essayer mais impossible d'atteindre ce deuxième niveau pour accéder aux div :/
Et quand j'essaie avec plusieurs getElementsByTagName j'ai également une erreur : cet objet ne gère pas cette propriété ou méthode
Voici plusieurs de mes test :
function CAC_Montant(nomFormulaire) { var montant1 = 0; var obj; var res = 0; var f = document.getElementById(nomFormulaire); var longueur = f.length; var montantReleve; var td = f.getElementsByTagName("td"); // montantReleve = f.getElementsByTagName('cptrapproIdReleveBancaire').getAttribute("value"); for(var i=0; i<longueur; i++) { if(f.elements[i].checked){ { // obj = f.getElementsByTagName('td')[i]; // res = document.getElementById('taListeEncaissementsNonRapprLigne'+[i].getAttribute("class"); // alert(res); //res = parseFloat(f.getElementsByTagName('div')[8].getAttribute("title")); //.getElementsByTagName('div')[5].getAttribute("title")); //alert(res); //var fils = f.childNodes; //var nbFils = fils.length; //for(var i = 0; i < nbFils; i++){ //document(fils[i]); //} //var div = td[i].getElementsByTagName("div"); // res = div[8].getAttribute("title"); //var fils2 = fils.childNodes; //res = parseFloat(fils[i].childNodes[8].getAttribute("title")); var fils = f.elements[i].childNodes; var fils2 = fils.childNodes; res = parseFloat(fils2[8].getAttribute("title")); alert(res); // res = parseFloat(fils2[8].getAttribute("title")); montant1 = res + montant1; } } } alert(montant1); return(montant1) }
Toutes ces tentatives me renvoi une erreur. Et quand j'arrive à accéder au title de mon div, c'est seulement au 8eme de la page, jamais sur mon tr courant :(
Désolé pour le code en vrac, mais si ça peut inspirer autant le mettre =)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
12 mars 2013 à 10:33
12 mars 2013 à 10:33
var fils2 = fils.childNodes;
res = parseFloat(fils2[8].getAttribute("title"));
en deuxième niveau les fils de <td> tu n' a qu'un seul <div>
essaie:
res = parseFloat(fils2[8].getAttribute("title"));
en deuxième niveau les fils de <td> tu n' a qu'un seul <div>
essaie:
res = parseFloat(fils2[0].getAttribute("title"));
Mallik-Macif
Messages postés
4
Date d'inscription
lundi 11 mars 2013
Statut
Membre
Dernière intervention
13 mars 2013
12 mars 2013 à 10:46
12 mars 2013 à 10:46
Exact ! C'est au niveau des TR que j'ai plusieurs div, petite erreur =)
J'ai essayer avec fils2[0] et toujours cette même réponse, 0 a la valeur null ou n'est pas un objet. :/
Je continu de tenter des choses sur cette voie !
J'ai essayer avec fils2[0] et toujours cette même réponse, 0 a la valeur null ou n'est pas un objet. :/
Je continu de tenter des choses sur cette voie !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
12 mars 2013 à 17:34
12 mars 2013 à 17:34
avec childNodes j'ai pas réussi, car les div n'ont pas l'air d'être les fils des td ???
avec cette solution ça marche:
(j'ai bidouillé ton code pour pouvoir tester)
avec cette solution ça marche:
(j'ai bidouillé ton code pour pouvoir tester)
<script type="text/javascript"> function CAC_Montant(nomFormulaire) { var montant1 = 0; var obj; var res = 0; var f = document.getElementById(nomFormulaire); var longueur = f.length; var montantReleve; //var td = f.getElementsByTagName("td"); // montantReleve = f.getElementsByTagName('cptrapproIdReleveBancaire').getAttribute("value"); for(var i=0; i<longueur; i++) { if(f.elements[i].checked){ { //le pb c'est que ce qui est checked c'est l'input checkbox, pas le tr donc ce ne sont pas les fils de tr que l'on atteingnait mais les fils de <input type checkbox //il n'en a pas //donc il faut atteindre la tr concerné //on met un id à l'input checkbox dont la terminaison numérique _n est identique a celle de l'id du tr //recup de la partie num de l'id var id_case=f.elements[i].id; var array_n_id=id_case.split('_'); var n_id=array_n_id[1]; //on atteint le tr concerné, celui qui a la même terminaison numérique de l'id var element_tr=document.getElementById('taListeEncaissementsNonRapprLigne'+n_id); //et on va vers le 8 iéme td var cel = element_tr.getElementsByTagName("td")[7]; // premier élément de la liste childNodes de cel var element_div = cel.getElementsByTagName("div")[0]; var res = parseFloat(element_div.getAttribute('title')); alert(res); // res = parseFloat(fils2[8].getAttribute("title")); montant1 = res + montant1; } } } alert(montant1); return(montant1); } </script> <form name="form1" id="form1" method="post" action="" > <table width="400"border="1"> <tr id='taListeEncaissementsNonRapprLigne0' style='cursor:default;' class='TbLnPr'> <td width="30" align='center'> <input type='checkbox' id='cptTableSelecttaListeEncaissementsNonRappr_0' name='cptTableSelecttaListeEncaissementsNonRappr[]' value='1215725'> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='1215725'>1215725</div> </td> <td align='center' style='width:10%' onclick=''> <div class='celluleTable' title='X'>X</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='4401'>4401</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='13596932'>13596932</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='29/10/2012'>29/10/2012</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='29/10/2012'>29/10/2012</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='75.00'>75.00</div> </td> </tr> <tr id='taListeEncaissementsNonRapprLigne1' style='cursor:default;' class='TbLnPr' > <td width=30 align='center'><input type='checkbox' id='cptTableSelecttaListeEncaissementsNonRappr_1' name='cptTableSelecttaListeEncaissementsNonRappr[]' value='1215725' > </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='85462310'>85462310</div> </td> <td align='center' style='width:10%' onclick=''> <div class='celluleTable' title='Y'>Y</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='5502'>5502</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='18655421'>18655421</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='02/10/2012'>02/10/2012</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='02/10/2012'>02/10/2012</div> </td> <td align='center' style='width:15%' onclick=''> <div class='celluleTable' title='150.00'>150.00</div> </td> </tr> </table> <input type="button" name="bt1" value="TEST" onclick="CAC_Montant('form1')"; /> </form>
Mallik-Macif
Messages postés
4
Date d'inscription
lundi 11 mars 2013
Statut
Membre
Dernière intervention
13 mars 2013
13 mars 2013 à 09:24
13 mars 2013 à 09:24
Ca fontionnnee!!!
Merci beaucoup d'avoir prit du temps pour résoudre mon problème !
Je suis bloquer dessus depuis jeudi je commençais à abandonner !
Effectivement les checkbox / tr / td et div ne doivent pas être en relation :/
Bien joué en tout cas, j'ai posté sur différent forum et tu es le seul à avoir apporté une bonne réponse !
J'ai regarder ton code et je pense pas avoir réussi à faire ça tout seul, mais je l'ai compris ! :)
Je marque le post comme résolu et merci encore d'avoir prit le temps de me répondre :)
Merci beaucoup d'avoir prit du temps pour résoudre mon problème !
Je suis bloquer dessus depuis jeudi je commençais à abandonner !
Effectivement les checkbox / tr / td et div ne doivent pas être en relation :/
Bien joué en tout cas, j'ai posté sur différent forum et tu es le seul à avoir apporté une bonne réponse !
J'ai regarder ton code et je pense pas avoir réussi à faire ça tout seul, mais je l'ai compris ! :)
Je marque le post comme résolu et merci encore d'avoir prit le temps de me répondre :)
Alain_42
Messages postés
5361
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
894
13 mars 2013 à 10:41
13 mars 2013 à 10:41
Ok,
C'est bien que tu ai compris le principe de ce que j'ai fait.
Bonne chance pour la suite.
@lain
C'est bien que tu ai compris le principe de ce que j'ai fait.
Bonne chance pour la suite.
@lain