Bonjour à tous!
J'ai un code qui me permet de gérer l'ordre d'une liste d'éléments en Drag & Drop.
A chaque fois qu'on déplace un élément j'appelle la fonction getGroupOrder() qui inscrit l'ordre dans un champs caché pour chaque élément.
Ce code fonctionne très bien sous IE6/7 et FF2 mais PAS sous Firefox3.
Dans ma page, voici les éléments :
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 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="content-language" content="fr" /> <script type="text/javascript" src="js/prototype.js"></script> <script type="text/javascript" src="js/scriptaculous.js"></script> <script language="JavaScript"> function getGroupOrder(className, orderIds, nbElements) { var sections = document.getElementsByClassName(className); var sequence = ''; sections.each(function(section) { var sectionID = section.id; var order = Sortable.serialize(sectionID); sequence += Sortable.sequence(section); }); imageorder = sequence.split(","); for (var i = 0; i < nbElements; i++) { document.getElementById(orderIds+(imageorder[i])).value = i; //gestion des numéros d'éléments if ( document.getElementById('num_'+(imageorder[i])) ) { document.getElementById('num_'+(imageorder[i])).innerHTML = '<strong>'+(i+1)+'.</strong>'; } } return false; } </script>
Et en-dessous je crée le Sortable :
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 <div id="priority" class="priority"> <li id="box_0"> <div class="box-order"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="" onmouseup="getGroupOrder('priority', 'orderId_', 45);"></tr> </table> <input type="hidden" name="orderId_0" id="orderId_0" value="" /> <input type="hidden" name="maisonId_0" id="maisonId_0" value="71" /> </div> </li> <li id="box_1"> <div class="box-order"> <table border="0" cellpadding="0" cellspacing="0"> <tr class="" onmouseup="getGroupOrder('priority', 'orderId_', 45);"></tr> </table> <input type="hidden" name="orderId_1" id="orderId_1" value="" /> <input type="hidden" name="maisonId_1" id="maisonId_1" value="72" /> </div> </li> </div>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <!-- Sortable script --> <script type="text/javascript" language="javascript"> Sortable.create('priority',{tag:'li', ghosting:false, constraint:false}) </script>
La fonction getGroupOrder() est censée écrire l'ordre de l'image dans le champs caché qui lui est assigné.
Voilà l'erreur que j'obtiens sous Firefox 3 :
Je pense que l'erreur vient de la première ligne de la fonction getGroupOrder() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part sections.each is not a function
Code : Sélectionner tout - Visualiser dans une fenêtre à part var sections = document.getElementsByClassName(className);
Comment contourner cette erreur?
Partager