IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

cet objet ne gère pas cette méthode, louche


Sujet :

JavaScript

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut cet objet ne gère pas cette méthode, louche
    bonjour à tous.

    j'ai une fonction qui marche très bien sous FF, mais qui bloque sous IE :

    l'erreur : et objet ne gère pas cette propriété ou cette méthode

    une partie du code de la fonction en question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function check_correction()
    {
    if(document.getElementById('correction').value=="0")
    {
    if(compte)
    {
    clearTimeout(compte);
    }
     
    var a=0;
    var b=0;
    var c=0;
     
    nombre_mots=document.getElementById('nombre_mots').value;
    sachant que la ligne de l'erreur est la ligne var c=0; !!
    si je retire les trois lignes de déclaration de variable, alors la ligne d'erreur est ...vide ! (et pourtant le n° de ligne change !).

    je le teste en local : ie ne marchant pas sur mon ordi (pour afficher les pages sur internet), j'ai été obligé de copier coller ma source (depuis FF), dans un nouveau fichier HTML pour le tester avec ie en local....si quelqu'un à ne meilleure solution

    merci!

    fred

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    le numero de ligne t'es retourné par quoi ? par IE
    je suis quasi certain que le numéro de ligne retourné n'est pas bon ...
    ce n'est donc pas ta variable c que est incriminée ....

    Il faudrait nous montrer un peu plus de code ... et aussi un peu de html en rapport

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    oui numéro de ligne retournée par ie.

    Je me doute bien que la ligne n'est pas bonne (j'avais pensé à un nom de variable interdit sinon...) mais je ne sais pas comment récupérer le vrai numéro de ligne ???


    voici tout mon code javascript :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    <script type='text/javascript'>
     
    var compte; 
     
    function corrige_faute(id_mot)
    {
    if(document.getElementById('correction').value=="0")
    {
    mot=document.getElementById('mot'+id_mot);
     
    val=mot.innerHTML;
    len=val.length;
    len++;
    txt="<input type='text' id='corr"+id_mot+"' size='"+len+"' value=\""+val+"\" onBlur=\"enregistre_faute('"+id_mot+"');\">";
    mot.innerHTML=txt;
    document.getElementById("corr"+id_mot).focus();
     
    }
     
    }
     
    function enregistre_faute(id_mot)
    {
    mot=document.getElementById('mot'+id_mot);
    corr=document.getElementById('corr'+id_mot).value;
    mot.innerHTML=corr;
    }
     
     
     
    function check_correction()
    {
    if(document.getElementById('correction').value=="0")
    {
    if(compte)
    {
    clearTimeout(compte);
    }
     
    var a=0;
    var b=0;
    var c=0;
     
    nombre_mots=document.getElementById('nombre_mots').value;
    for(i=1;i<nombre_mots;i++)
    {
    mot=document.getElementById('mot'+i).innerHTML;
    corr=document.getElementById('correction_mot'+i).innerHTML;
    aff_faute=document.getElementById('aff_faute'+i).value;
     
    if(mot!=corr && aff_faute=="")
    {
    document.getElementById('mot'+i).innerHTML="<b><font color='#274DA3'>"+corr+"</font> <font color='#990000'>(<s>"+mot+"</s> il n'y avait pas de faute!)</font></b>";
    a++;
    }
    else if(mot==corr && aff_faute=="1")
    {
    faute=document.getElementById('faute'+i).value;
    document.getElementById('mot'+i).innerHTML="<b><font color='#274DA3'>"+corr+"</font> <font color='#990000'>(<s>"+faute+"</s> <font color='#009900'>bien joué!</font>)</font></b>";
    b++;
    }
    else if(mot!=corr && aff_faute=="1")
    {
    document.getElementById('mot'+i).innerHTML="<b><font color='#274DA3'>"+corr+"</font> <font color='#990000'>(<s>"+mot+"</s> faute non corrigée!)</font></b>";
    c++;
    }
    }
    document.getElementById('recommencer').style.display="inline";
    document.getElementById('correction').value="1";
     
    if(a>=2){s1='s';}else{s1='';}
    if(b>=2){s2='s';}else{s2='';}
    if(c>=2){s3='s';}else{s3='';}
     
    txt='<h3>Résultat :</h3>';
    txt=txt+'<font color="#990000">'+a+'</font> mot'+s1+' sans faute corrigé'+s1+'<br>';
    txt=txt+'<font color="#990000">'+c+'</font> faute'+s3+' oubliée'+s3+' / mal corrigée'+s3+' <br>';
    txt=txt+'<font color="#009900">'+b+'</font> mot'+s2+' correctement corrigé'+s2+'<br>';
     
    document.getElementById('resultats_texte').style.display="block";
    document.getElementById('resultats_texte').innerHTML=txt;
     
    ajax_res_textes_fautifs(''+a+'',''+b+'',''+c+'');
     
    }
    }
     
    function ajax_res_textes_fautifs(a,b,c)
    {
    var req; 
        try {  req = new ActiveXObject('Msxml2.XMLHTTP');   }
        catch (e) 
        {
            try {   req = new ActiveXObject('Microsoft.XMLHTTP');   }
            catch (e2) 
            {
              try {  req = new XMLHttpRequest();     }
              catch (e3) {  req = false;   }
            }
         }
     
    	id_texte=document.getElementById('id_texte').value;
     
     
    req.open("get", "ajax/enr_textes_fautifs.php?id_texte="+id_texte+"&a="+a+"&b="+b+"&c="+c, true); 
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    req.send(null);
    }
     
    var secon=0;
    var minu=0;
     
    function chrono(){
    secon++;
    if (secon>59)
    {
    secon=0;
    minu++
    if(minu<=9)
    {
    minu="0"+minu;
    }
    document.getElementById('minutes').innerHTML=minu;
    } 
     
    if(secon<=9)
    {
    secon="0"+secon;
    }
    document.getElementById('secondes').innerHTML=secon;
     
    compte=setTimeout('chrono()',1000);
    }
     
    </script>
    vous pouvez voir la page à cette adresse (l'erreur se produit lorsque l'on clique sur correction..., uniquement avec IE) :

    eguens.com/v2/orthophonie/textes-fautifs/

    Désolé je ne fais pas de lien, je ne veux pas que cette page soit indexée pour le moment

    merci !!

  4. #4
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    tu utilises innerHTML
    et des balises <font>

    Dans ta fonction check_correction() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    nombre_mots=document.getElementById('nombre_mots').value;
    for(i=1;i<nombre_mots;i++)
    value est une chaine de caractères donc forcément incrémenter i avec comme limite un mot, ça plante

    Comme ceci ça devrait passer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre_mots= parseInt(document.getElementById('nombre_mots').value);
    Tu n'as pas déclaré la variable i de cette boucle.



    Une question : dans la fonction corrige_faute(id_mot) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    val=mot.innerHTML;
    len=val.length;
    len++;
    txt="<input type='text' id='corr"+id_mot+"' size='"+len+"' value=\""+val+"\" onBlur=\"enregistre_faute('"+id_mot+"');\">";
    mot.innerHTML=txt;
    document.getElementById("corr"+id_mot).focus();
    Tu es sûr que ce bout de code fonctionne sans problème ?



    Et perds l'habitude de déclarer tes variables au milieu des tes fonctions

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Bonjour,
    merci pour votre réponse.

    J'ai déclaré i, et j'ai modifié
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre_mots= parseInt(document.getElementById('nombre_mots').value);
    mais ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    val=mot.innerHTML;
    len=val.length;
    len++;
    txt="<input type='text' id='corr"+id_mot+"' size='"+len+"' value=\""+val+"\" onBlur=\"enregistre_faute('"+id_mot+"');\">";
    mot.innerHTML=txt;
    document.getElementById("corr"+id_mot).focus();
    Marche sans problème sous FF et IE.
    Il y a t il une erreur dans cette partie de code ???

    Quel est le problème à utiliser des balises <font> et innerHTML ??

    merci !

  6. #6
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementById('nombre_mots'));
    et dis moi ce que ça retourne.

    Pour innerHTML : un jour ou l'autre, on a toujours des mauvaises surprises avec cet attribut

    Pour <font>, bien c'est... périmé Utilise plutôt des feuilles de styles, tu te compliqueras moins la vie

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    alert(document.getElementById('nombre_mots')); === object html input element
    alert(document.getElementById('nombre_mots').value); ==== 341

    j'avais compris que c'était pas bon de mélanger innerHTML et font !

    par quoi je pourrais remplacer innerHTML ???

    pour font c'est de la paraisse, plus rapide que <span style color> mais généralement j'utilise le css pour le formatage, bien plus simple à retoucher que <font>.

    merci

  8. #8
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    Citation Envoyé par swakone Voir le message
    alert(document.getElementById('nombre_mots')); === object html input element
    alert(document.getElementById('nombre_mots').value); ==== 341
    ok Tu as donc 341 éléments dans ta page ?


    Citation Envoyé par swakone Voir le message

    par quoi je pourrais remplacer innerHTML ???
    par les fonctions DOM : createElement(), createTextNode(), appendChild() etc.

    Citation Envoyé par swakone Voir le message
    pour font c'est de la paraisse, plus rapide que <span style color> mais généralement j'utilise le css pour le formatage, bien plus simple à retoucher que <font>.
    utilise donc les feuilles de style

    Si par exemple tu dois créer un élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    var conteneur = document.getElementById("idConteneur");
    var element = document.createElement("input"); // création d'un input
     
    element.type = "text"; // input de type text
    element.value = "valeur";
    element.className = "nomDeLaClasse";
     
    element.style.color = "#0000FF"; // texte en bleu
     
    conteneur.appendChild(element); // insertion de l'input dans le conteneur
    plus "propre" que innerHTML et <font> n'est-ce pas ?

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    en effet, nettement plus propre !

    J'ai beaucoup plus que 341 éléments dans la page
    Cela pose t il un problème ? (je ne savais pas qu'il y avait des restrictions !)

    Est ce une piste pour le problème ?

  10. #10
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    Citation Envoyé par swakone Voir le message
    J'ai beaucoup plus que 341 éléments dans la page
    Cela pose t il un problème ? (je ne savais pas qu'il y avait des restrictions !)

    Est ce une piste pour le problème ?
    non ce n'est pas le nombre d'éléments qui pose problème, ça serait plutôt leur existence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mot=document.getElementById('mot'+i).innerHTML;
    corr=document.getElementById('correction_mot'+i).innerHTML;
    aff_faute=document.getElementById('aff_faute'+i).value;
    Ton script fonctionne très bien sous Firefox ? Sa console n'affiche pas d'erreur ? Puis pour déboguer ton script, ça ne va pas être facile
    Place dans ton code des alert() pour repérer le bug. Si un alert ne s'affiche pas tu auras localisé le bug.

  11. #11
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    pas leur existence mais leur type ?
    l'objet existe mais il e possède pas la propriété que tu essayes de modifier

  12. #12
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par Swakone
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    alert(document.getElementById('nombre_mots')); === object html input element
    alert(document.getElementById('nombre_mots').value); ==== 341
    Citation Envoyé par Auteur Voir le message
    ok Tu as donc 341 éléments dans ta page ?
    Heu... est-ce que ça ne veux pas plutôt dire que la valeur de l'input type=text ayant l'id 'nombre_mots' est la chaine '341' ?

    Si ça avait été
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    alert(document.getElementsByName('nombre_mots').length); // --> affiche '341'
    là d'accord pour les 341 éléments...

    Non ?

  13. #13
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    heu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert(document.getElementById('nombre_mots').value); ==== 341
    === pas possible un value c'est du string ...
    == je veux bien

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    === pas possible un value c'est du string ...
    == je veux bien
    j'ai mis trois égals comme j'aurais pu mettre une flèche, ça ne fait pas parti de mon code, c'était juste pour vous montrer les réponses retournées !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Heu... est-ce que ça ne veux pas plutôt dire que la valeur de l'input type=text ayant l'id 'nombre_mots' est la chaine '341' ?
    la chaine retournée par l'input est un nombre me servant à connaître la valeur max de i pour une boucle for.

    En fait voici ce que j'ai essayé de faire :

    j'ai un texte (qui sort d'une BDD avec requete mysql), et j'essaie de le retraiter pour rendre chaque mot cliquable, le but du jeu étant de corriger les fautes..

    Alors j'ai simplement fait un explode sur les espaces avec php, et mis chaque mot de mon texte dans un span avec un id défini.

    Ensuite quand l'utilisateur clique sur correction, une boucle javascript compare la valeur actuelle du span (qui a pu être modifiée par l'utilisateur) avec la valeur sans faute enregistrée, et affiche les résultats...

    Je ne sais pas quelle aurait été la meilleure méthode ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    non ce n'est pas le nombre d'éléments qui pose problème, ça serait plutôt leur existence
    Que voulez vous dire ? être sur qu'ils existent ? oui... chaque fois que ma boucle php imprime un mot dans un span, mon $nombre_mot est incrémenté de 1. Donc pour la boucle js tous les id testés existent (sinon j'aurai eu une erreur sous FF du genre windows.getElementById('') is undefined !).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ton script fonctionne très bien sous Firefox ? Sa console n'affiche pas d'erreur ? Puis pour déboguer ton script, ça ne va pas être facile
    Place dans ton code des alert() pour repérer le bug. Si un alert ne s'affiche pas tu auras localisé le bug.
    Oui fonctionne très bien comme attendu, et aucune erreur dans la console.

    Je vais essayer les alert, mais ce qui m'étonne c'est que c'est en tout début de fonction, remarque ça sera peut être plus rapide ! à moins que le problème ne vienne pas de cette fonction !

    merci de votre aide !!

    fred

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Re bonjour à tous.

    a priori j'ai trouvé le problème :

    j'ai déclaré ma variable nombre_mots

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var nombre_mots=parseInt(document.getElementById('nombre_mots').value);
    en début de fonction et ça a 'air de marcher
    je n'avais jamais pris l'habitude de déclarer mes variables car ça ne m'avais jamais posé problème avant, pourquoi cette fois ci ????

    faut encore que je le teste en ligne, mais en local je n'ai plus d'erreur

    merci à tous !!

    Fred

  16. #16
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Excuse-moi de te poser encore cette question (swakone), alors que le post semble être résolu, mais :

    je n'ai pas compris quel est l'élément HTML dont l'id est ici 'nombre_mots' ? parce que si tu accèdes directement à une variable javascript par un getElementById, ... je vais tout de suite prendre deux aspirines

  17. #17
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    je crois que tu confonds la variable nombre_mots et l'id de l'élément nombre_mots. Ce sont deux choses différentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    var nombre_mots;
    var i;
     
    // on récupère la valeur de l'objet ayant pour id 'nombre_mots'
    // que l'on place dans la variable nombre_mots
    // le contenu des input étant des chaines de caractères on transforme cette
    // chaine en entier grâce à parseInt()
    nombre_mots = parseInt(document.getElementById('nombre_mots').value;
     
    // pour i allant de 1 à "nombre_mots" (c'est un entier)
    // on réalise les instructions contenues dans la boucle
    for(i=1; i<nombre_mots; i++)
    {
    .....
     
    }

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 21
    Points : 12
    Points
    12
    Par défaut
    Auteur a tout compris

    nombre_mots est à la fois un élément html (un input type hidden en l'occurrence) et une variable js qui contient la valeur de cet input...

    Oui le sujet est résolu, mais quelqu'un pourrait il me dire pourquoi cette fois ci le fait que je n'ai pas déclaré ma variable a posé problème ?

    merci !

    Fred

  19. #19
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 650
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 650
    Points : 11 141
    Points
    11 141
    Par défaut
    D'ailleurs dans d'autres fonctions de ton script (corrige_faute() et enregistre_faute() par exemple) certaines variables ne sont pas déclarées, donc regarde ça à nouveau
    Et je te conseille vivement de déclarer toutes tes variables (cf. les explications ci-dessous).


    Pour ton problème de déclaration de variables : sache d'abord qu'une variable non déclarée est, par défaut, une variable globale.

    Maintenant, pour comprendre le problème exécute sous IE ces trois exemples et tu vas comprendre :
    Exemple 1 : La variable est déclarée (pas de problème)
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" /> 
     
    <script type="text/javascript">
    <!--  
    function testValue()
    {
      var Test1;
      Test1 = parseInt(document.getElementById("Test1").value); 
      
      alert(Test1); //affiche 4
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="testValue()">
     
    <input id="Test1" value="4" type="text" />
     
    </body>
     
    </html>


    Exemple 2 : la variable n'est pas déclarée (ça plante sous IE)
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" /> 
     
    <script type="text/javascript">
    <!--  
    function testValue()
    {
      Test1 = parseInt(document.getElementById("Test1").value);
      
      alert(Test1); // ça plante :(
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="testValue()">
     
    <input id="Test1" value="4" type="text" />
     
    </body>
     
    </html>


    Exemple 3 :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
     
    <title></title>
     
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta http-equiv="Content-Language" content="fr" /> 
     
    <script type="text/javascript">
    <!--  
    function testValue()
    { 
      alert(Test1.value); // si, si tu as bien lu et ça affiche quoi donc ??
    }
     
    //-->
    </script>
     
    </head>
     
    <body onload="testValue()">
     
    <input id="Test1" value="4" type="text" />
     
    </body>
     
    </html>

    en fait quand tu écris (sans avoir déclaré Test1 au préalable)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Test1 = parseInt(document.getElementById("Test1").value);
    Test1 n'est pas une variable globale javascript, mais fait référence à l'objet Test1 présent dans la page !!! Donc dans la ligne de code ci-dessus, tu essayes de redéfinir l'objet Test1 en un nombre entier ça plante

  20. #20
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 664
    Points
    66 664
    Billets dans le blog
    1
    Par défaut
    sous IE seulement ..

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XL-2003] "Cet objet ne gère pas cette propriété ou méthode"
    Par Aubencheulobois dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/08/2010, 16h42
  2. [POO] [IE6] Cet objet ne gère pas cette propriété ou cette méthode
    Par sabotage dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/01/2009, 22h44
  3. Réponses: 8
    Dernier message: 05/06/2008, 15h19
  4. Cet objet ne gère pas cette propriété ou cette méthode
    Par _Michel dans le forum Visual C++
    Réponses: 2
    Dernier message: 08/11/2007, 22h06
  5. [Jscript]Cet objet ne gère pas cette propriété ou cette méthode
    Par 1tox dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 02/06/2006, 09h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo