Accueil > Forum > > > > Composant javascript marche sous firefox mais pas sous ie
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
Livres en rapport
|
Derniers Blogs
JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc
Forum
UTILISER UN .JSUTILISER UN .JS par zaikoe
Cliquez pour lire la suite par zaikoe
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|