begin process at 2012 05 29 07:37:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript Orienté objet (POO)

 > 

Classes

 > 

Composant javascript marche sous firefox mais pas sous ie


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Composant javascript marche sous firefox mais pas sous ie

lundi 16 octobre 2006 à 11:42:52 | Composant javascript marche sous firefox mais pas sous ie

tazamorte

Bonjour

J'ai le problème suivant j'ai crée un composant javascript sous firefox car il était plus facile de débugger une fois fini je m'apercois qu'il marche tres bien sous firefox mais rien ne s'affiche sous ie et pas de message d'erreur a signalé et je suis perdu c'est pourquoi je sollicite votre aide voici le code du composant
Ma seule conclusion est celle ci :
Je peux mettre autant d'alert qe je veux ils apparaissent partout comme il faut car mon script NE PLANTE PAS j'ai un problème d'affichage

je pense que mon problème doit se situer dans ma fonction display sur les appenchild ou sur la gestion de la table


car si dans ma fonction NewSelect je fais l'appendchild sur this.divEmplacement mon select apparait ce qui montre bien que ma gestion avec une table ne doit pas marcher de la meme facon avec firefox et que ie
mais je ne sais pas pk


Citation:
//---------------------------
//DESCRIPTION DU COMPOSANT:
//---------------------------
//Ce composant permet de gérer une liste de filtre un select selectionnnant
// le type de filtre et un composant filtre permettant de gérer le filtre
//Pour un filtre donnée les données sont stockés dans une liste
//l'ajout de ces données de filtre se fait soit par un select une combo pour une aide à la saisie
//ou par une zone de text selon option choisi au départ.
//La gestion des types de filtre se fait par le biais d'une liste de filtre après chaque selection
//un nouveau select apparait avec son filtre associé proposant les types de filtre non sélectionnés
//auparavant.


//--------------------------
//INCLUSION DE FICHIER
//--------------------------
//le composant requiert le fichier javascript aide_saisi.js pour le composant combobox
//le composant requiert le fichier javascript Filtre.js pour le composant Filtre

//--------------------------
//FONCTIONS DU COMPOSANT
//--------------------------
//Display : Fonction de lancement du composant en affichant le 1er select et son filtre associé
//Action : Fonction permettant de gérer sur le onchange les créations et desctructions des selects et filtres associés
//NewFiltre : Fonction permettant de créer un nouveau filtre
//NewSelect : Fonction permettant de créer un nouveau select
//SupprSelect : Fonction permettant de supprimer un select
//SupprFiltre : Fonction permettant de supprimer un filtre
//ResetDonneeSelect : Fonction permettant de supprimer les listes de gestion des selects
//MAJDonneesRestante : Fonction permettant de supprimer la valeur passé en param dans le tableau des données restantes
//AddDonneeSelect : Fonction permettant d'ajouter des données aux listes gérant les selects
//AddDonneeFiltre : Fonction permettant d'ajouter des données à la combo du filtre passé en params
//Afficher_Select : Fonction permettant d'afficher le select ayant le num passé en params
//Masquer_Select : Fonction permettant de masquer le select ayant le num passé en params
//Afficher_Filtre : Fonction permettant d'afficher le filtre ayant le num passé en params
//Masquer_Filtre : Fonction permettant de masquer le filtre ayant le num passé en params
//SetDimensionSelect : Fonction permettant de faire un autosize en fonction de la longueur


//Constructeur
function GroupeFiltre(div)
{
//pour la gestion des données du regroupement avec les selects
this.Donnees = new Array();
this.Donnees_restante = new Array();

//zone de reception du composant avec gestion du string ou du composant
if(typeof(div) == "string"){this.divEmplacement = document.getElementById(div);}
else{this.divEmplacement = div;}

//permet de sauver la taille maximun que le mot le plus long de liste donnée peut atteindre
this.maxlength = 0;
//gestion avec une ligne vide
this.option_vide=1;

//tableaux pour la gestion dynamique des composants
this.TabSelect = new Array();
this.TabFiltre = new Array();
this.TabType = new Array();//tableau contenant le code du select et le type associé

//Table de mise en forme
this.Table;
this.TabTr = new Array();
this.TabTd = new Array();

this.Debut=1;

if(typeof(div) == "string"){this.id = div+"_GF";}

//Type du composant
this.type="GroupeFiltre";
}

//Lance le premier select ET FILTRE
GroupeFiltre.prototype.Display = function()
{
var TrCourant;

//création de la table pour mettre en forme
this.Table = document.createElement("TABLE");
this.divEmplacement.appendChild(this.Table);

//création de 1ere ligne
TrCourant = document.createElement("TR");
this.TabTr[this.TabTr.length] = TrCourant;
this.Table.appendChild( TrCourant);

//création de la 2eme ligne
TrCourant = document.createElement("TR");
this.TabTr[this.TabTr.length] = TrCourant;
this.Table.appendChild( TrCourant);

//genere le 1er select et filtre
var nvselect;
var nvfiltre;

nvselect=this.NewSelect(this.TabSelect.length +1);
nvfiltre=this.NewFiltre(this.TabFiltre.length +1);

//mise a jour de la tab des select et des filtres
this.TabSelect[this.TabSelect.length] = nvselect;
this.TabFiltre[this.TabFiltre.length] = nvfiltre;

this.SetDimensionSelect();
}

//Permet d'ajouter des données
GroupeFiltre.prototype.AddDonneeSelect = function(valeur,code,typef)
{
this.Donnees_restante [this.Donnees.length] = new Array(valeur, code?code:valeur);
this.Donnees [this.Donnees.length] = new Array(valeur, code?code:valeur);

this.TabType[this.TabType.length] = new Array(code,String(typef));

//différente verif avant mettre a jour la taille des selects
if(valeur.length > 0)
{
nb_maj = (valeur.match(new RegExp("[A-Z][a-z][0-9]", "g")));
nb_maj = nb_maj ? nb_maj.length : 0;
nb_min = valeur.length - nb_maj;
taille = nb_maj * 10 + nb_min * 6;

//mise a jour de la taille du champ
if(taille > this.maxlength)
{
this.maxlength = taille;
this.SetDimensionSelect();
}
}
}

//Fonction permettant de créer le nouveau filtre et de le retourner
GroupeFiltre.prototype.NewFiltre = function(niveau)
{
var newfiltre;
//mise en forme
//recup du tr
var TrCourant = this.TabTr[1];
var TdCourant;
TdCourant = document.createElement("TD");
TdCourant.name=niveau+"filtre";

//mise a jour de la table des td
this.TabTd[this.TabTd.length] = TdCourant;
TrCourant.appendChild(TdCourant);

//mise a jour des filtres
newfiltre = new Filtre(TdCourant,this.TabType[niveau-1]);
newfiltre.Display();

return newfiltre;
}

//Fonction permettant de créer le nouveau select et de le retourner
GroupeFiltre.prototype.NewSelect = function(niveau)
{
var my_obj = this;
var nwselect = document.createElement("select");
//ajout de ActionBoutonSearch pour répondre au besoin de l'export
nwselect.onchange=function(event){eval(my_obj).Action(event, niveau);if(my_obj.TabFiltre[niveau-1].typesaisie!="TEXT")ActionBoutonSearch(my_obj.TabFiltre,my_obj.GetListSelectValue(),my_obj.Donnees.length);};

//recup de la ligne
var TrCourant = this.TabTr[0];

//création de la cellule
var TdCourant;
TdCourant = document.createElement("TD");
TdCourant.name=niveau+"select";

//mise a jour du tableau des cellules
this.TabTd[this.TabTd.length] = TdCourant;

//gestion des noeuds
TrCourant.appendChild(TdCourant);

//on met le select dans la cellule
TdCourant.appendChild(nwselect);

//création de l'option du select vide
//a virer si on ne fait pas une gestion avec une ligne vide
if(this.option_vide==1)
{
var cellulevide;
cellulevide = document.createElement("option");
cellulevide.innerHTML = "";
cellulevide.value = "";
nwselect.appendChild(cellulevide);
}

//boucle permettant de créer les options du select avec les valeurs du tableau des données restantes
for (var i = 0; i < this.Donnees_restante.length; i++)
{
var cellule;
cellule = document.createElement("option");
cellule.innerHTML = this.Donnees_restante[i][0];
cellule.value = this.Donnees_restante[i][1];
nwselect.appendChild(cellule);
}


//mis a jour des dimensions
this.SetDimensionSelect();
//retourne le select créer
return nwselect;
}


//Fonction permettant de gérer sur le onchange les créations et desctructions des selects
GroupeFiltre.prototype.Action = function(ev, num_select)
{
var objet;

//recup de l'objet en cours
if(!ev){objet = window.event.srcElement;}
else{objet=ev.target;}

if (document.all)
{
this.value = objet.options[objet.selectedIndex].value;
}
else
{
//init
var valeur=objet.value;
var nvselect;
var nvfiltre;

if(this.TabSelect.length > num_select)
{
//suppression des selects qui se trouve au dela du select selectionné
this.SupprSelect(num_select);
//suppression des filtres qui se trouve au dela du select selectionné
this.SupprFiltre(num_select);

//empeche la création d'un option vide apres les suppressions
this.option_vide=0;

//recupere le selectcourant dans le tableau ds select
var selectcourant;
selectcourant=this.TabSelect[num_select-1];
//recupere les options du select courant
var tab_temp= new Array();
for(var i=0;i<selectcourant.options.length;i++)
{
tab_temp[i]= new Array(selectcourant.options[i].text,selectcourant.options[i].value);
}
//mise a jour du tableau des données restantes par les options du select courant
this.Donnees_restante=tab_temp;

//afin de pouvoir avoir qu'un select apres une suppression sinon on ajoute un nouveau select
//if(num_select>1)
this.Action(ev,num_select);
}
else
{
//si la nombre de select est inférieur aux nombres de données à exploiter
//on crée un nouveau select contenant la liste du selectcourant moins sa valeur selectionné
if( this.TabSelect.length < this.Donnees.length)
{
//mise a jour des données restantes
this.MAJDonneesRestante(valeur);
var typef=this.GetType(valeur);
filtrecur=this.TabFiltre[this.TabFiltre.length-1] ;
filtrecur.ChangeType(typef);
//création du select
nvselect=this.NewSelect(this.TabSelect.length + 1);
//création du filtre
nvfiltre=this.NewFiltre(this.TabFiltre.length + 1);

//on le rajoute au tableau des selects
this.TabSelect[this.TabSelect.length] = nvselect;

//on le rajoute au tableau des filtres
this.TabFiltre[this.TabFiltre.length] = nvfiltre;
}
}
}
}
// Fonction permettant de récuperer le type du filtre
GroupeFiltre.prototype.GetType= function (valeur)
{
for (var i = 0; i < this.TabType.length; i++)
{
if(this.TabType[i][0]==valeur)
return this.TabType[i][1];
}
return 0;
}
// Fonction permettant de récuperer un tableau ou la première valeur sera la valeur du select et es suivantes
//Les valeurs de la liste du filtre pour un nivo passé en params
GroupeFiltre.prototype.GetNiveau= function (nivo)
{
var TabNivo = new Array();
for (var i = 0; i < this.TabSelect.length; i++)
{
if(i==nivo)
{
TabNivo[TabNivo.length]=this.TabSelect[i].value;
TabNivo[TabNivo.length]=this.TabFiltre[i].GetListeValue();
}
}
return TabNivo;
}
//Fonction permettant de récupérer la liste ordonnée des valeurs des selects
GroupeFiltre.prototype.GetListSelectValue = function()
{
var Tab=new Array();
for (var i=0; i < this.TabSelect.length;i++)
{
if(this.TabSelect[i].value!="")
Tab[Tab.length]=this.TabSelect[i].value;
}
return Tab;
}

//Fonction permettant de supprimer les select au delà du select passé en params par son num
GroupeFiltre.prototype.SupprSelect = function(num)
{
//recup de la cellule
var TdCourant;
//recup de la ligne
var TrCourant = this.TabTr[0];

for(var i=this.TabSelect.length-1; i>num-1; i--)
{
//recup de la cellule select dans le tableau des td
//l'indice est i(nb de select restant * 2 car il y a aussi les filtres dans le tableau des cellules)
TdCourant=this.TabTd[i*2];

//on enleve le select courant dans la cellule
TdCourant.removeChild(this.TabSelect[i]);

//suppression dans le tab des selects
this.TabSelect.splice(i,1);

//on enleve la cellule de ligne
TrCourant.removeChild(TdCourant);

//suppression dans le tab des td
this.TabTd.splice(i*2,1);
}
}

//Fonction permettant de supprimer les select au delà du select passé en params par son num
GroupeFiltre.prototype.SupprFiltre = function(num)
{
//recup de la cellulle
var TdCourant;
//recup de la ligne
var TrCourant = this.TabTr[1];
//mise a jour de la table des td
for(var i=this.TabFiltre.length-1; i>num-1; i--)
{
//recup de la cellule filtre dans le tableau des td
//l'indice est i(nb de filtre restant + num(nombre de select restant dans le tab des td)
TdCourant=this.TabTd[i+num];

//destruction du filtre
this.TabFiltre[i].Remove();

//suppression dans le tab des filtres
this.TabFiltre.splice(i,1);

//on enleve la cellule de ligne
TrCourant.removeChild(TdCourant);

//suppression dans le tab des td
this.TabTd.splice(i+num,1);
}

}

//Fonction permettant de supprimer la valeur passé en param dans le tableau des données restantes
GroupeFiltre.prototype.MAJDonneesRestante = function(valeur)
{
var tab_temp= new Array();
for (var i=0; i<this.Donnees_restante.length; i++)
{
if (this.Donnees_restante[i][1] != valeur)
{
tab_temp[tab_temp.length] = this.Donnees_restante[i];
}
}
this.Donnees_restante=tab_temp;
}


//Permet d'ajouter des données
GroupeFiltre.prototype.AddDonneeFiltre = function(num,valeur,code)
{
this.Donnees_restante [this.Donnees.length] = new Array(valeur, code?code:valeur);
this.Donnees [this.Donnees.length] = new Array(valeur, code?code:valeur);

//différente verif avant mettre a jour la taille des selects
if(valeur.length > 0)
{
nb_maj = (valeur.match(new RegExp("[A-Z][a-z][0-9]", "g")));
nb_maj = nb_maj ? nb_maj.length : 0;
nb_min = valeur.length - nb_maj;
taille = nb_maj * 10 + nb_min * 6;

//mise a jour de la taille du champ
if(taille > this.maxlength)
{
this.maxlength = taille;
this.SetDimensionSelect();
}
}
}


//Fonction permettant supprimer les tableaux des donnees
GroupeFiltre.prototype.ResetDonneeSelect = function ()
{
var tab_temp=new Array();
this.Donnees_restante=tab_temp;
this.Donnees =tab_temp;
}

//Fonction permettant de rendre visible le select passé en param par son numéro
GroupeFiltre.prototype.Afficher_Select = function(num)
{
var selectcourant=this.TabSelect[num];
selectcourant.style.visibility = "visible";
}
//Fonction permettant de rendre non visible le select passé en param par son numéro
GroupeFiltre.prototype.Masquer_Select = function(num)
{
var selectcourant=this.TabSelect[num];
selectcourant.style.visibility = "hidden";
}

//Fonction permettant de rendre visible le select passé en param par son numéro
GroupeFiltre.prototype.Afficher_Filtre = function(num)
{
var filtrecourant=this.TabFiltre[num];
// filtrecourant.style.visibility = "visible";
}

//Fonction permettant de rendre non visible le select passé en param par son numéro
GroupeFiltre.prototype.Masquer_Filtre = function(num)
{
var filtrecourant=this.TabFiltre[num];
// filtrecourant.style.visibility = "hidden";
}

//Fonction permettant de rendre visible le select passé en param par son numéro
GroupeFiltre.prototype.SetDimensionSelect = function()
{
for (var i =0 ; i < this.TabSelect.length ;i++)
{
this.TabSelect[i].style.width = parseInt(this.maxlength ? this.maxlength : 30) + 40;

}
}

Merci d'avance
mercredi 18 octobre 2006 à 17:46:21 | Re : Composant javascript marche sous firefox mais pas sous ie

pagextchab2

J ai essaye add et appendchild sous ie et rien à faire. Je cherche la solution pour affecter des valeurs d'une liste dans une fenêtre enfant.


Cette discussion est classée dans : fonction, var, select, filtre, length


Répondre à ce message

Sujets en rapport avec ce message

tableau avec tri dynamique [ par rcedric ] Salut a tous,voila mon probleme; je cherche à afficher un tableau et que lorsqu l'on clic sur le libellé le tableau est trié et réafficher dynamiqueme portée des variables dans fonction [ par BirD ] salut tout le monde,j'ai un gros problème de variables. Je m'explique, j'ai une fonction (appellée au chargement) qui contien une boucle for. Cette bo interprétation de variables dans une fonction [ par adn_ ] Bonjour,Voila j'ai une fonction a laquelle je passe 2 variables i et j ou i est le numéro de ma checkbox et j le nom, de ce coté la pas de probleme la Remplir un tableau en fonction d'un SELECT [ par simsai ] Bonjour,mon probleme: je ne vois pas comment faire pour remplir le contenu d'un tableau en fonction de la selection de mon select?J'ai une page que j' Fonction javascript [ par righton ] Bonjour voici une fonction pour mettre du bold ou de l'italic dans un champ de saisie :function format(f) { var str = document.selection.createRange( compter le nombre de radio button [ par misterdarth ] Bonjour,Lors de la saisie d'un formulaire, je cherche à tester certains champs afin de m'assurer que l'utilisateur n'a pas mis n'importe quoi.Dans ce Div bougeable en fonction du scroll... problème le navigateur panique... Script très pratique pour faire planter IE [ par MeTh ] Bonjour,J'essai de réalisé un script qui déplace les div verticalement ou horizontalement en fonction du scroll de la fenetre pour que les div reste t Un tout petit pb. [ par PascalCmoa ] PascalCmoa email: PascalCmoaBonjour à tous <img src=/imgs Afficher des valeurs en fonction d'un select [ par Monico9385 ] Bonjour, comme dit dans le titre, je voudrai récupérer des valeurs lorsque je selectionne quelque chose dans un select. Je m'explique je selectio Affichage en fonction d'un select [ par Monico9385 ] Bonjour, voici mon probleme: j'ai 2 select, un comportant les noms de pays, et un autre comportant les noms de villes. J'aimerai que quand on sélecti


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,201 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales