Bonjour,
J'ai un soucis avec javascript, je vais d'abord poster les pages.
Donc voici un exemple de code html généré par ma page php:
Et voici l'ensemble des fonction js:Code:
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title>Mon site</title> <link href="/webroot/css/style.css" rel="stylesheet" type="text/css" /> </head> <body> <div class="container"> <div class="logo"> <div style="float:left;"> <img src="/webroot/img/logoc.png" alt="" /> </div> <div style="float:right; color:#666;"> <p>Bonjour, admin nous sommes le Lundi 23 Août 2012 à 00:08</p> </div> </div> <div id="menu"> <ul style="width:720px; margin:0 auto; line-height:30px; vertical-align:middle;"> <li><a href="/pages/view/Accueil" title="Accueil">Accueil</a></li> <li><a href="/pages/view/Rechercher" title="Rechercher">Rechercher</a></li> <li><a href="/pages/view/Nos-menus" title="Menus">Menus</a></li> <li><a href="/pages/view/Toutes-nos-recettes" title="Nos recettes">Nos recettes</a></li> <li><a href="#" title="Inscription">Mon compte</a> <ul class="sousmenu" style="position:absolute; z-index:100;"> <li><a href="/recettes/view/Nom-de-la-recette" style="color:black; background-color:white;">Ajouter une recette</a></li> <li><a href="/menus/view/Ma-selection" style="color:black; background-color:white;">Ajouter un menu</a></li> <li><a href="/users/view/Mesrecettes" style="color:black; background-color:white;">Mes recettes</a></li> <li><a href="#" style="color:black; background-color:white;">Mes menus</a></li> <li><a href="#" style="color:black; background-color:white;">Mon compte</a></li> <li><a href="/users/logout" style="color:black; background-color:white;">Se déconnecter</a></li> </ul> </li> </ul> </div> <div class="page" style="padding-top:60px;"> <table class="inscription"> <tr> <td> <h1>Votre sélection de recette</h1> <form method="post" id="menu" action="/Recherche-recette-par-nom.html" > <table style="border-collapse:collapse; width:570px; margin:auto; text-align:center;" id="tableau"> <tr> <td style="wdith:30px;">Position</td> <td style="wdith:450px;">Nom de la recette</td> <td style="wdith:30px;">Monter</td> <td style="wdith:30px;">Descendre</td> <td style="wdith:30px;">Suppr.</td> </tr> <tr> <td>1</td> <td>adazda <input type="hidden" name="adazda" value="21" /> </td> <td><img src="/webroot/img/up.png" style="width:16px;" onclick="up(this);" alt="Monter"/></td> <td><img src="/webroot/img/down.png" style="width:16px;" onclick="down(this);" alt="Descendre"/></td> <td><img src="/webroot/img/sup.png" style="width:16px;" onclick="suppr(this);" alt="Supprimer"/></td> </tr> <tr> <td>2</td> <td>ffff <input type="hidden" name="ffff" value="22" /> </td> <td><img src="/webroot/img/up.png" style="width:16px;" onclick="up(this);" alt="Monter"/></td> <td><img src="/webroot/img/down.png" style="width:16px;" onclick="down(this);" alt="Descendre"/></td> <td><img src="/webroot/img/sup.png" style="width:16px;" onclick="suppr(this);" alt="Supprimer"/></td> </tr> <tr> <td>3</td> <td>aeaeaeaeaae <input type="hidden" name="aeaeaeaeaae" value="23" /> </td> <td><img src="/webroot/img/up.png" style="width:16px;" onclick="up(this);" alt="Monter"/></td> <td><img src="/webroot/img/down.png" style="width:16px;" onclick="down(this);" alt="Descendre"/></td> <td><img src="/webroot/img/sup.png" style="width:16px;" onclick="suppr(this);" alt="Supprimer"/></td> </tr> <input type="hidden" name="ordre" value=""/> </table> </form> </td> </tr> </table>
Donc le problème.. Dans mes fonctions js up et down, vous pouvez voir que j'ai mis un alert(champs[2].value);, sauf que dans down cette variable est vide, et dans up elle contient 23, ce qui est bien l'id du troisième input. Donc pour l'occasion j'ai créé une page http://www.taupe-cuisto.fr/test.php. Avec le code html généré + le js. Donc pour info order et l'ordre des valeurs des input dans l'ordre dans lequel ils apparaissent dans la page.Code:
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
59
60
61 function up(img) { var source = img.parentNode.parentNode.rowIndex, cible = source - 1, idMenu = document.getElementById("tableau"), order, ligneSource = idMenu.rows[source], nbr_cellules = idMenu.rows[source].cells.length, o, i, contenu2, champs = document.getElementsByTagName('input'); order = ''; //création des lignes if (source>1){ idMenu.deleteRow(source); idMenu.insertRow(cible); for (o = 0; o < nbr_cellules; o = o + 1) { contenu2 = ligneSource.cells[o].innerHTML; idMenu.rows[cible].insertCell(-1); idMenu.rows[cible].cells[o].innerHTML = contenu2; } for (o = 1; o < idMenu.rows.length; o = o + 1) { idMenu.rows[o].cells[0].innerHTML = o; } for (o = 0; o <= champs.length-2; o = o + 1) { // on parcourt les champs sauf le dernier car c'est l'ordre i = champs[o].value; order = order+'/'+i; } alert(champs[2].value); champs[champs.length-1].value = order; } } function suppr(img) { var source = img.parentNode.parentNode.rowIndex, cible = source + 1, order, idMenu = document.getElementById("tableau"), ligneSource = idMenu.rows[source], nbr_cellules = idMenu.rows[source].cells.length, o, contenu2, champs = document.getElementsByTagName('input'); order=''; idMenu.deleteRow(source); for (o = 1; o <= idMenu.rows.length; o = o + 1) { idMenu.rows[o].cells[0].innerHTML = o; } var champs = document.getElementsByTagName('input'); for (o = 0; o < champs.length-1; o = o + 1) { // on parcourt les champs sauf le dernier car c'est l'ordre i = champs[o].value; order = order+'/'+i; } champs[champs.length-1].value = order; alert(champs[3].value); } function down(img) { var source = img.parentNode.parentNode.rowIndex, cible = source + 1, order, idMenu = document.getElementById("tableau"), ligneSource = idMenu.rows[source], nbr_cellules = idMenu.rows[source].cells.length, i, contenu2, champs = document.getElementsByTagName('input'); order = ''; //création des lignes if (source < idMenu.rows.length - 1) { idMenu.deleteRow(source); idMenu.insertRow(cible); for (o = 0; o < nbr_cellules; o = o + 1) { contenu2 = ligneSource.cells[o].innerHTML; idMenu.rows[cible].insertCell(-1); idMenu.rows[cible].cells[o].innerHTML = contenu2; } for (var o = 1; o < idMenu.rows.length; o = o + 1) { idMenu.rows[o].cells[0].innerHTML = o; } for (var o = 0; o <= champs.length-2; o = o + 1) { // on parcourt les champs sauf le dernier car c'est l'ordre i = champs[o].value; order = order+'/'+i; } alert(champs[2].value); champs[champs.length-1].value = order; } }
Si quelqu'un peut comprendre d’où vient cette erreur, car je ne vois vraiment pas ce qui ne va pas.
Cordialement.
Petit complément que je viens de voir, c'est que alert(champs[2].value); n'est vide que si on clique sur le bouton descendre, de la position 2. Désolé pour ce manque d'info.