Problème avec ma fonction wizz pour wizzer un input. [Résolu]

Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
- - Dernière réponse : cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
- 25 juin 2007 à 07:24
Bonjour,
J'ai une erreur sur un de mes codes qui permet de fare un wizz sur un élément. C'est pour faire un wizz sur le formulaire d'identification si le pass est faux comme sur Linux.
Mon code marche parfaitement avec Firefox2 mais me renvoie une erreur avec IE6.
IE me dit "Argument non valide" à la ligne ou j'ai marqué ERREUR en Rouge. Je n'arrive pas à trouver la solution.

function wizz(ID) {

var start_postion = parseFloat(document.getElementById(ID).style.left);
var position = start_postion;

function modifx(d) {
position += d;
document.getElementById(ID).style.left = position+'px'; ERREUR "Argument non valide" de la par de IE6 mais non pb sous Firefox
}

var l = 4;
var timeex = 0;
var timexplus = 4;
var nb = 0;

do {
window.setTimeout(modifx,timeex,-l);
timeex += timexplus;
nb++;
}
while ( nb < 8)

nb = 0;

do {
window.setTimeout(modifx,timeex,l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,-l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,-l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,-l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,-l);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx,timeex,l);
timeex += timexplus;
nb++;
}
while ( nb < 8)

}

wizz('login');
Afficher la suite 

9 réponses

Meilleure réponse
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
3
Merci
quelle est l'erreur ? ça plante où ? pas de raisons...

mais ça :

<script type="text/javascript">
function wizz(ID)
{   var start_postion = parseFloat(document.getElementById(ID).style.left);
    var position = start_postion;
    function modifx(d)
    {    position += d;
        document.getElementById(ID).style.left = position+'px';
    }
    var l = 4;
    var timeex = 0;
    var timexplus = 4;
    var nb = 0;
    do
    {   setTimeout( function() { modifx(-l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 8)
    nb = 0;
    do
    {   setTimeout( function() { modifx(l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(-l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(-l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(-l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(-l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 16)
    nb = 0;
    do
    {   setTimeout( function() { modifx(l); }, timeex );
        timeex += timexplus;
        nb++;
    }   while ( nb < 8)
}

wizz('login');

</script>


ça baigne ( mais si on peut très largement simplifier )



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 200 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_bultez
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
Bonjour,

    franchement, je ne sais pas ce qu'est un wizz... ??

    mais avec FF ou IE :

        setTimeout()
        Exécute une instruction après un certain délai.
        Attend deux paramètres:
            1. Code = Une instruction JavaScript qui doit être répétée. Le plus souvent un appel de fonction.
            2. Pause = Valeur en millièmes de seconde jusqu'à l'exécution.

       donc : window.setTimeout(modifx,timeex,-l); ?

    et si tu fais un alert(d ) dans modifx ==> undefined.
    ==>    erreur avec FF et IE.







o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o 
| Avec | et mieux : <label style ="color: rgb(0, 128, 0);">Télécharger</label> | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug
| | Outils / Console d'erreurs | | 
|~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~| 
|<label style="color: rgb(128, 0, 0);">Internet Explorer</label>|activer le deboggage : utils/options Ile Debogger IE | 
| | dans la liste, sous "Navigation" : décocher | | 
| | ° Afficher une notification de chaque erreur de script | | 
| | ° Désactiver le débogage de Scripts (autres applications)| | 
| | ° Désactiver le débogage de Scripts (Internet Explorer) | | 
o~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~o~~~~~~~~~~~~~~~~o








<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
donc : window.setTimeout(modifx,timeex,-l); ?

modifx c'est le nom de la fonction que j'appel
timeex c'est le temps de pause
 et
-l c'est le paramètre de la fonction modifx
au début je déclare l ,  -l c'est l'opposé.
Commenter la réponse de dvdstory
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
j'ai bien compris...                mais la syntaxe est fausse.

setTimeout Attend deux paramètres:
            1. Code = Une instruction JavaScript qui doit être répétée. Le plus souvent un appel de fonction.
            2. Pause = Valeur en millièmes de seconde jusqu'à l'exécution.



<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
J'ai vérifier la syntaxe de la fonction SetTimeout sans mon livre Aide-Memoire JavaScript ISBN 2-7464-0469-9
et il me confirme que l'on peu faire passer des argument a la fonction en 3 paramètres de la fonction SetTimeout.

J'ai essayer de mettre les parametres entre () mais sa marche ni sous IE ni sous FF.

function wizz(ID) {

var start_postion = parseFloat(document.getElementById(ID).style.left);
var position = start_postion;

function modifx(d) {
position += d;
document.getElementById(ID).style.left = position+'px';
}

var l = 4;
var timeex = 0;
var timexplus = 4;
var nb = 0;

do {
window.setTimeout(modifx(-l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 8)

nb = 0;

do {
window.setTimeout(modifx(l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(-l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(-l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(-l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(-l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)

nb = 0;

do {
window.setTimeout(modifx(l),timeex);
timeex += timexplus;
nb++;
}
while ( nb < 8)

}

wizz('login');
Commenter la réponse de dvdstory
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
>> il me confirme que l'on peu faire passer des argument a la fonction
>>en 3 paramètres de la fonction SetTimeout.
    de ce que j'ai lu partout (?) on ne parle que de 2 paramètres.
    je pense que ta doc est fausse ( d'ailleurs ça ne fonctionne pas... si ? )



>>window.setTimeout(modifx(l),timeex);
    pas tout à fait...
    il faudrait probablement un truc du style :
window.setTimeout("modifx("+l+");",timeex);
    pas testé car j'utilise :

    une syntaxe qui marche partout, toujours... : setTimeout( function() { modifx(l); }, timeex );




<hr />



Cordialement                Bul     [mon Site]     [M'écrire]



<hr />
Commenter la réponse de cs_bultez
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
    >>>de ce que j'ai lu partout (?) on ne parle que de 2 paramètres.
    je pense que ta doc est fausse ( d'ailleurs ça ne fonctionne pas... si ? )
http://www.UnrealNetwork.net





> ça marche sous FF2 sans pb

mais pour plus ce faire chier avec le passage des augument a la fonction j'ai fait 2 fonctions et j'appele la fonction qui convient. Mais j'ai toujours le pb avec IE avec le meme message d'erreur, ça n'est pas sa la source du pb.

function modifxp() {
d = 4;
position += d;
document.getElementById('login').style.left = position;
}

function modifxm() {
var d = -4;
position += d;
document.getElementById('login').style.left = position;
}

var timeex = 0;
var timexplus = 4;
var nb = 0;

do {
window.setTimeout(modifxm,timeex);
timeex += timexplus;
nb++;
}
while ( nb < 8)

nb = 0;

do {
window.setTimeout(modifxp,timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)
Commenter la réponse de dvdstory
Messages postés
13619
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
27
0
Merci
>>ça marche sous FF2 sans pb
    pas la version donnée au départ ( regarde la console d'erreurs )

>>window.setTimeout(modifxm,timeex);
    syntaxe toujours fausse ( y compris avec FF ! )
    le 1er paramêtre c'est des instructions javascript, l'appel d'une fonction ici...
    setTimeout("modifxm();",timeex);   ça devrait aller mieux.
   
    ce serait mieux de passer le paramètre plutôt que d'utiliser
       une variable globale... mais... si tu le sens comme ça...




<hr /> Cordialement Bul [mon Site] [M'écrire]<hr />
Commenter la réponse de cs_bultez
Messages postés
192
Date d'inscription
dimanche 23 janvier 2005
Statut
Membre
Dernière intervention
10 août 2009
0
Merci
C'est encore pire, ça marche plus sous FF2 et  encore moins IE6

do {
window.setTimeout("modifxm();",timeex);
timeex += timexplus;
nb++;
}
while ( nb < 8)

nb = 0;

do {
window.setTimeout("modifxp();",timeex);
timeex += timexplus;
nb++;
}
while ( nb < 16)http://www.UnrealNetwork.net
Commenter la réponse de dvdstory