Problème avec ma fonction wizz pour wizzer un input.

Résolu
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009 - 25 juin 2007 à 05:11
cs_bultez Messages postés 13615 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');

9 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juin 2007 à 07:24
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 />
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juin 2007 à 05:52
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 />
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
25 juin 2007 à 05:59
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é.
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juin 2007 à 06:04
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 />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
25 juin 2007 à 06:39
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');
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juin 2007 à 06:56
>> 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 />
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
25 juin 2007 à 07:02
    >>>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)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
25 juin 2007 à 07:09
>>ç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 />
0
dvdstory Messages postés 192 Date d'inscription dimanche 23 janvier 2005 Statut Membre Dernière intervention 10 août 2009
25 juin 2007 à 07:17
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
0
Rejoignez-nous