par
starkeus » 16 déc. 2005, 11:35
Edit: arf...j'ai oublié d'initialiser certaines variables maintenant ca marche sous IE aussi. 
Bonjour à tous,
je souhaite implémenter une structure de donnée de type PILE LIFO en
javascript...
J'ai cherché sur le web ce qui avait été déjà fait:
on peut utiliser un tableau et simplement appeler les méthodes
push() pour empiler et
pop() pour dépiler...mais la méthode
pop() ne fontionne pas sous IE
exemple:
Code : Tout sélectionner
var pile=new Array();
taille = pile.push("un");
document.write(taille);//affiche 1 ok sous FF et IE
taille = pile.push("deux");
document.write(taille);//affiche 2 ok sous FF et IE
taille = pile.push("trois");
document.write(taille);//affiche 3 ok sous FF et IE
//la suite ne fonctionne pas sous IE seulement à cause de la fonction pop()
item = pile.pop();
document.write(item);
document.write(pile.length);
item = pile.pop();
document.write(item);
document.write(pile.length);
item = pile.pop();
document.write(item);
document.write(pile.length);
alors je me suis mis dans l'idée de recréer ma pile en javascript mais j'ai quelques difficultés (ça fait un bail que je n'en ai pas fait) voici un début:
Code : Tout sélectionner
var pile=NULL;
//pour créer un item de ma pile
function Item(precedent, suivant, valeur) {
this.precedent=precedent;
this.suivant=suivant;
this.valeur=valeur;
}
function empiler (newvalue) {
var nouveau=new Item (null, null, newvalue);//mettre VAR NOUVEAU
if (pile == null)
pile = nouveau;
else {
var item=pile;//mettre VAR ITEM
while (item.suivant != null)
item=item.suivant;
item.suivant=nouveau;
nouveau.precedent=item;
}
}
function affiche (){
var item=pile;//mettre VAR ITEM
do {
document.write("valeur="+item.value);
item=item.suivant;
}
while (item != null);
}
document.write('debut');
empiler("1");
empiler("2");
empiler("3");
affiche();
document.write('fin');
sous FF ca marche, sous IE je n'ai que l'instruction document.write('debut') qui est éxécutée...tout cela bien évidemment sans aucune erreur JS générée...
Pourriez-vous m'aider?

[color=red]Edit: arf...j'ai oublié d'initialiser certaines variables maintenant ca marche sous IE aussi. :evil:
[/color]
Bonjour à tous,
je souhaite implémenter une structure de donnée de type PILE LIFO en [b]javascript[/b]...
J'ai cherché sur le web ce qui avait été déjà fait:
on peut utiliser un tableau et simplement appeler les méthodes [b]push()[/b] pour empiler et [b]pop()[/b] pour dépiler...mais la méthode [b]pop()[/b] ne fontionne pas sous IE
exemple:
[code]
var pile=new Array();
taille = pile.push("un");
document.write(taille);//affiche 1 ok sous FF et IE
taille = pile.push("deux");
document.write(taille);//affiche 2 ok sous FF et IE
taille = pile.push("trois");
document.write(taille);//affiche 3 ok sous FF et IE
//la suite ne fonctionne pas sous IE seulement à cause de la fonction pop()
item = pile.pop();
document.write(item);
document.write(pile.length);
item = pile.pop();
document.write(item);
document.write(pile.length);
item = pile.pop();
document.write(item);
document.write(pile.length);
[/code]
alors je me suis mis dans l'idée de recréer ma pile en javascript mais j'ai quelques difficultés (ça fait un bail que je n'en ai pas fait) voici un début:
[code]
var pile=NULL;
//pour créer un item de ma pile
function Item(precedent, suivant, valeur) {
this.precedent=precedent;
this.suivant=suivant;
this.valeur=valeur;
}
function empiler (newvalue) {
var nouveau=new Item (null, null, newvalue);//mettre VAR NOUVEAU
if (pile == null)
pile = nouveau;
else {
var item=pile;//mettre VAR ITEM
while (item.suivant != null)
item=item.suivant;
item.suivant=nouveau;
nouveau.precedent=item;
}
}
function affiche (){
var item=pile;//mettre VAR ITEM
do {
document.write("valeur="+item.value);
item=item.suivant;
}
while (item != null);
}
document.write('debut');
empiler("1");
empiler("2");
empiler("3");
affiche();
document.write('fin');
[/code]
sous FF ca marche, sous IE je n'ai que l'instruction document.write('debut') qui est éxécutée...tout cela bien évidemment sans aucune erreur JS générée...
Pourriez-vous m'aider?
:roll: :evil: