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.

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>
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
 
<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>
Et en-dessous je crée le Sortable :
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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sections.each is not a function
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
var sections = document.getElementsByClassName(className);

Comment contourner cette erreur?