Javascript et compatibilité
Smoking bird
Messages postés
870
Date d'inscription
Statut
Membre
Dernière intervention
-
Smoking bird Messages postés 870 Date d'inscription Statut Membre Dernière intervention -
Smoking bird Messages postés 870 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Le code suivant ne fonctionne pas partout de la même façon:
Sous Opera c'est impeccable, sous IE aussi (surprenant n'est-ce pas?), par contre sous firefox ça ne marche pas, et ça ne retourne aucune erreur. Le but est d'afficher des listes, et de retirer celle qu'on a affichée précédemment lorsqu'on en affiche une nouvelle.
Mes variables sont correctement transmises.
Quelqu'un a une idée?
Cordialement,
Smoke
Le code suivant ne fonctionne pas partout de la même façon:
var on=' '; function developp(ider,maxW,maxH){ if(on.length>=10) document.getElementById(on).style.display='none'; on=ider; }
Sous Opera c'est impeccable, sous IE aussi (surprenant n'est-ce pas?), par contre sous firefox ça ne marche pas, et ça ne retourne aucune erreur. Le but est d'afficher des listes, et de retirer celle qu'on a affichée précédemment lorsqu'on en affiche une nouvelle.
Mes variables sont correctement transmises.
Quelqu'un a une idée?
Cordialement,
Smoke
A voir également:
- Javascript et compatibilité
- Compatibilite windows 11 - Guide
- Telecharger javascript - Télécharger - Langages
- Pack compatibilité office 2003 - Télécharger - Bureautique
- Macos 14 compatibilité - Accueil - MacOS
- Désactiver mode compatibilité word - Forum Word
12 réponses
salut l'oiseau !
est-ce normal que "on" soit initialisé à " " et pas avec une chaîne vide ?
est-ce que le if ne concerne bien que "document.getElementById(on).style.display='none';" et pas l'instruction suivante ?
sinon, pas évident…
normalement FF connait tout ça !
regarde du côté du HTML.
comment appelles-tu la fonction ?
si c'est sur un évènement, essaie avec un autre et bien sûr en premier vérifie que ton doc soit valide.
est-ce normal que "on" soit initialisé à " " et pas avec une chaîne vide ?
est-ce que le if ne concerne bien que "document.getElementById(on).style.display='none';" et pas l'instruction suivante ?
sinon, pas évident…
normalement FF connait tout ça !
regarde du côté du HTML.
comment appelles-tu la fonction ?
si c'est sur un évènement, essaie avec un autre et bien sûr en premier vérifie que ton doc soit valide.
Salut toi :D la forme?^^
Pour le on, oui^^, en fait au cours de mes tests j'ai initialisé cette variable de cette façon parce que ça m'arrangeait bien plus que de le faire 'à l'ancienne'.
Pour le if, j'ai tenté aussi avec des accolades, ça n'y change rien^^
Et c'est vrai qu'il me semble bien aussi que FF connaît tout ça :D. En fait sous Opera ça fonctionne au premier appel sur chacune des listes, mais après ça ne fait plus rien du tout.
Sinon, mon doc est valide^^ d'où mon incompréhension. Je pense pas que l'évènement soit responsable, mais sait on jamais, je fais un appel sur un onclick très standard:
Autre chose: en fait ma fonction est plus grande que ça, mais le reste n'est pas supposé interférer. Le reste de la fonction marche aussi au premier appel sur chaque liste, mais firefox me relève une erreur et IE ne me l'exécute qu'à moitié^^ la voici en entier:
Pour le on, oui^^, en fait au cours de mes tests j'ai initialisé cette variable de cette façon parce que ça m'arrangeait bien plus que de le faire 'à l'ancienne'.
Pour le if, j'ai tenté aussi avec des accolades, ça n'y change rien^^
Et c'est vrai qu'il me semble bien aussi que FF connaît tout ça :D. En fait sous Opera ça fonctionne au premier appel sur chacune des listes, mais après ça ne fait plus rien du tout.
Sinon, mon doc est valide^^ d'où mon incompréhension. Je pense pas que l'évènement soit responsable, mais sait on jamais, je fais un appel sur un onclick très standard:
<a onclick=\"developp('c$ref','298','216')\" href='#'>$nom</a>. L'utilisation du lien de cette façon peut elle poser problème?
Autre chose: en fait ma fonction est plus grande que ça, mais le reste n'est pas supposé interférer. Le reste de la fonction marche aussi au premier appel sur chaque liste, mais firefox me relève une erreur et IE ne me l'exécute qu'à moitié^^ la voici en entier:
var on=' ';
function developp(ider,maxW,maxH){
var id=document.getElementById(ider);
if(on.length>=10){
document.getElementById(on).style.display='none';
}
var sec=1;
var frame=24;
var vitesse=(sec*frame)/100;
id.style.border='1px solid #ffcc00';
var delay=setInterval( function() {
if( id.offsetWidth<=maxW ) var nextW=parseInt(id.offsetWidth)+20+'px';
if( id.offsetHeight<=maxH ) var nextH=parseInt(id.offsetHeight)+20+'px';
if( id.offsetWidth<=maxW ) id.style.width=nextW;
if( id.offsetHeight<=maxH ) id.style.height=nextH;
}, vitesse);
setTimeout(function(){
for(var i=0;i<=id.childNodes.length;i++){
id.getElementsByTagName('li')[i].firstChild.style.display='block';
id.getElementsByTagName('li')[i].style.border='1px solid #373737';
}
},800);
on=ider;
}
firefox me relève une erreur
ah ba faut l'dire !
en Javascript, 1 erreur = fin de l'exécution du code, c'est là qu'il faut chercher !
c'est quoi le message ?
ah ba faut l'dire !
en Javascript, 1 erreur = fin de l'exécution du code, c'est là qu'il faut chercher !
c'est quoi le message ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
c'est ça:
pas cool hein?
id.getElementsByTagName("li")[i] is undefined [Break on this error] id.getElementsByTagName('li')[i].firstChild.style.display='block';
pas cool hein?
salut,
ben si c'est cool !
c'est ta variable i qui doit être vide ou delà du nombre de <li>.
en plus, il te dit même quoi faire !
"Break on this error"
ben si c'est cool !
c'est ta variable i qui doit être vide ou delà du nombre de <li>.
en plus, il te dit même quoi faire !
"Break on this error"
Ptdr t'as raison Dalida :D y'avait bien un problème: l'utilisation du childNodes était complètement erronnée, elle renvoi tous les noeuds, alors que seuls les li m'intéressent^^. On a fait pire comme erreur pour une première utilisation :).
Ceci dit, ça me renvoi encore une erreur :D sur cette portion de code:
la ligne incriminée est en gras^^ voici le retour:
id.getElementsByTagName("li")[i] is undefined
Ceci dit, ça me renvoi encore une erreur :D sur cette portion de code:
for(var i=0;i<=id.getElementsByTagName('li').length;i++){ id.getElementsByTagName('li')[i].firstChild.style.display='block'; id.getElementsByTagName('li')[i].style.border='1px solid #373737'; }
la ligne incriminée est en gras^^ voici le retour:
id.getElementsByTagName("li")[i] is undefined
il serait plus logique de stocker le résultat dans un tableau plutôt que d'appeler la méthode à chaque passage.
sinon regarde ta deuxième instruction, elle n'est pas identique à la première, tu n'utilises pas le FirstChild.
sinon regarde ta deuxième instruction, elle n'est pas identique à la première, tu n'utilises pas le FirstChild.
"Il serait plus logique de stocker le résultat dans un tableau plutôt que d'appeler la méthode à chaque passage."
comment ça?
J'm'en suis rendu compte pour la seconde propriété, voici vers où je m'oriente désormais:
ça ne marche pas franchement mieux:s comme si l'utilisation du tableau avec i merdait grave:s...
comment ça?
J'm'en suis rendu compte pour la seconde propriété, voici vers où je m'oriente désormais:
var style=id.getElementsByTagName('li')[i].firstChild.style; style.display='block'; style.borderWidth='1px'; style.borderStyle='solid'; style.borderColor='#373737';
ça ne marche pas franchement mieux:s comme si l'utilisation du tableau avec i merdait grave:s...
var items = id.getElementsByTagName('li') for(var i=0;i<items.length;i++) { if(items[i].firstChild) { items[i].firstChild.style.display='block'; items[i].firstChild.style.border='1px solid #373737'; } }
j'ai toujours su que t'étais un artiste :D (au delà de la chanteuse^^;) )
ça marche impecc, j'ai plus d'erreur^^
Ceci dit, pour le reste de la fonction, le problème demeure :s.
Voici sa forme actuelle:
A l'appel, elle développe une liste et affiche les images qui sont dedans au bout d'un léger délai.
Aux appels suivants, elle est supposée récupérer la variable 'on' qui lui dit quelle est la dernière liste ouverte, pour pouvoir la fermer et ouvrir la liste concernée.
Ca fonctionne sous Opera, sous Firefox ça refuse de fermer la liste précédente, sous IE ça ouvre les listes et affiche les images, mais ça ne développe pas la liste pour qu'elle atteigne sa taille prédéfinie, et ça ne se répète sous aucun des navigateurs (mais ça il semblerait que ce soit parce que je n'opère pas de clearInterval()...)
Prêt pour de nouveaux défis? :D
ça marche impecc, j'ai plus d'erreur^^
Ceci dit, pour le reste de la fonction, le problème demeure :s.
Voici sa forme actuelle:
var on=' '; function developp(ider,maxW,maxH){ var id=document.getElementById(ider); if(on.length>=10){ document.getElementById(on).style.display='none'; } var sec=1; var frame=24; var vitesse=(sec*frame)/100; id.style.border='1px solid #ffcc00'; var delay=setInterval( function(){ if( id.offsetWidth<=maxW ){ var nextW=parseInt(id.offsetWidth)+20+'px'; id.style.width=nextW; } if( id.offsetHeight<=maxH ){ var nextH=parseInt(id.offsetHeight)+20+'px'; id.style.height=nextH; } }, vitesse); var img=id.getElementsByTagName('li'); setTimeout(function(){ for(var i=0;i<=img.length;i++){ if(img[i]){ style=img[i].firstChild.style; style.display='block'; style.border='1px solid #373737'; } } },800); on=ider; }
A l'appel, elle développe une liste et affiche les images qui sont dedans au bout d'un léger délai.
Aux appels suivants, elle est supposée récupérer la variable 'on' qui lui dit quelle est la dernière liste ouverte, pour pouvoir la fermer et ouvrir la liste concernée.
Ca fonctionne sous Opera, sous Firefox ça refuse de fermer la liste précédente, sous IE ça ouvre les listes et affiche les images, mais ça ne développe pas la liste pour qu'elle atteigne sa taille prédéfinie, et ça ne se répète sous aucun des navigateurs (mais ça il semblerait que ce soit parce que je n'opère pas de clearInterval()...)
Prêt pour de nouveaux défis? :D
et tu te mettrais pas aux frameworks ?…
+ http://script.aculo.us/
+ https://jquery.com/
+ https://mootools.net/
etc.
+ http://script.aculo.us/
+ https://jquery.com/
+ https://mootools.net/
etc.