Pb Javascript help !

WRInaute passionné
Je me sert du javaScript pour un tri de tableau.
Il plante si le tableau contient un attribut colspan.

Merci de m'aider svp.

Je suis carrément nul en Javascript :cry:

Je crois que la ligne concernée est celle-ci :

Code:
objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")

Code:
var index
function sort_int(p1,p2) { return p1[index]-p2[index]; } //fonction pour trier les nombres
function sort_char(p1,p2) { return ((p1[index]>=p2[index])<<1)-1; } //fonction pour trier les strings

function TableOrder(e,Dec)  //Dec= 0:Croissant, 1:Décroissant
{ //---- Détermine : oCell(cellule) oTable(table) index(index cellule) -----//
var FntSort = new Array()
if(!e) e=window.event
for(oCell=e.srcElement?e.srcElement:e.target;oCell.tagName!="TH";oCell=oCell.parentNode); //determine la cellule sélectionnée
for(oTable=oCell.parentNode;oTable.tagName!="TABLE";oTable=oTable.parentNode); //determine l'objet table parent
for(index=0;oTable.rows[0].cells[index]!=oCell;index++); //determine l'index de la cellule

//---- Copier Tableau Html dans Table JavaScript ----//
var Table = new Array()
for(r=1;r<oTable.rows.length;r++) Table[r-1] = new Array()

for(c=0;c<oTable.rows[0].cells.length;c++) //Sur toutes les cellules
{ var Type;
objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
if(objet.match(/^\d\d[\/-]\d\d[\/-]\d\d\d\d$/)) { FntSort[c]=sort_char; Type=0; } //date jj/mm/aaaa
else if(objet.match(/^[0-9£€$\.\s-]+$/)) { FntSort[c]=sort_int; Type=1; } //nombre, numéraire
else { FntSort[c]=sort_char; Type=2; } //Chaine de caractère

for(r=1;r<oTable.rows.length;r++) //De toutes les rangées
{ objet=oTable.rows[r].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
switch(Type)
{ case 0: Table[r-1][c]=new Date(objet.substring(6),objet.substring(3,5),objet.substring(0,2)); break; //date jj/mm/aaaa
case 1: Table[r-1][c]=parseFloat(objet.replace(/[^0-9.-]/g,'')); break; //nombre
case 2: Table[r-1][c]=objet.toLowerCase(); break; //Chaine de caractère
}
Table[r-1][c+oTable.rows[0].cells.length] = oTable.rows[r].cells[c].innerHTML
}
}
 
WRInaute discret
Si une celleule contient un attribut colspan, cela réduit le nombre de cellules dans le tableau. Exemple : dans la première ligne 3 cellules (oTable.rows[0].cells.length = 3), dans la deuxième 2 dont une avec un colspan=2 (oTable.rows[1].cells.length = 2).
Ce qui fait que
Code:
objet=oTable.rows[1].cells[c].innerHTML.replace(/<\/?[^>]+>/gi,"")
plante sur la troisième cellule de la deuxième ligne car elle n'existe pas.
Dans
Code:
for(c=0;c<oTable.rows[0].cells.length;c++)
il faut remplacer "rows[0]" par "rows[r-1]" (car r-1 est le numéro de la ligne me semble-t-il)
 
WRInaute passionné
Je te remercie ; depuis j'ai un peu plus compliqué le tableau en question, mais je vais voir si cela m'aide.
 
Discussions similaires
Haut