Partage
  • Partager sur Facebook
  • Partager sur Twitter

[js]Ligne incomprehensible

une ligne de code trouver au detour d'un script

    1 juin 2006 à 15:30:58

    Bonjour

    Je suis en train de faire un script en JS.
    Dans ce script je recupère les attribue et leur valeur d'un balise html (type img)
    et je la reconstitue en JS par la suite

    le problème arrive au moment ou je veu lui mettre les attribut du type onclick, onmouseout....
    Sous ff ça marche nickel un setAttribute et on en parle plus. Sous IE il veu pas en entendre parler.

    Après quelque recherche j'ai trouver une ligne de code qui fonctionne sous IE
    sauf que je sais pas du tout ce que sa fait ni pourquoi on doit l'écrire comme ça.

    voila la fameuse ligne :
    eval('cible.'+attrTemp+' = function() {'+valeurAttrTemp+'};');

    attrTemp est la nom de l'attribut
    valeurAttrTemp est la valeur de l'attribut

    dans ma balise j'ai ça : onclick="fcttest('textbidon');"
    donc attrTemp vaut onclick
    et valeurAttrTemp vaut fcttest('textbidon');

    ce qui me donne une fois les valeur remplacer :
    eval('cible.inclick=function(){fcttest('textbidon');};');

    si quelqu'un pouvais me dire ce que veu dire ce qu'il y a dans le eval sa serais cool.

    Merci d'avance
    • Partager sur Facebook
    • Partager sur Twitter
      1 juin 2006 à 15:36:17

      Je crois que ça veux dire que lors que l'on clique sur ta cible (<img> si j'ai bien compris) il déclanche la fonction fcttest...


      • Partager sur Facebook
      • Partager sur Twitter
        1 juin 2006 à 15:41:16

        oui il déclanche la fonction fcttest
        Ce que je ne comprend pas ces la syntaxe de tout ça.
        J'ai trouver nul par cette syntaxe....

        Et surtout je voudrais savoir comment il execute la fonction alors que je créé meme pas l'attribut dans la balise vu qu'il n'y a pas de setAttribute.

        Sous FF la ligne est la suivante :
        balise.setAttribute(attrTemp,valeurAttrTemp);

        mais sous IE y a juste le eval, hors eval fait executer la chaine passer en paramtre, c'est pas un setAttribute....
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          1 juin 2006 à 15:51:27

          faut donner la fonction fcttest() mais je pense qu'elle doit juste renvoyer le parametre

          le fait qu'il n'y ait pas de setAttribut est normal vu que c'est assigné en "dur"
          (cad element.attribut = valeurAttribut)

          enfin je crois ... il faudrait que tu nous donne le script complet, j'ai pas capté ou le eval se trouve ...


          ( edit )

          eval('cible.inclick=function(){fcttest('textbidon');};');
          ca ca assigne a l'element cible lors de l'action inclick (bref...) une fonction qui execute la fonction fcttest('textbidon')

          c'est fait comme ca parceque on ne peut pas assigner de param a une fonction assigné a un onclick ou onmouseover etc...
          • Partager sur Facebook
          • Partager sur Twitter
            1 juin 2006 à 16:03:29

            Bon deja c'est pa sinclick c'est onclick désolé d'avoir fait la faute de frappe^^

            pour le code le voila :

            //ajout des attributs à la balise
                            for(i=0;i<attribut.length;i++)
                            {
                                    if(attribut[i+1])
                                    {
                                            //on recupère l'attribut
                                            var attrTemp=attribut[i].split(' ')[1];
                                            var valeurAttrTemp=supprQuote(attribut[i+1].split(' ')[0]);
                                            if(document.all)//on différencie le cas IE des autre navigateur. IE étant spécifique pour la mise en place de certains attribut
                                            {
                                                    if(attrTemp.substring(0,2)=='on')
                                                            eval('cible.'+attrTemp+' = function() {'+valeurAttrTemp+'};');//comprend pas cette ligne -_-
                                                    else
                                                            baliseCree.setAttribute(attrTemp,valeurAttrTemp);
                                            }
                                            else
                                                    baliseCree.setAttribute(attrTemp,valeurAttrTemp);
                                           
                                    }
                            }


            Je vais peut etre finir par passer pour un boulet mais le "cible" correspond a quoi?
            Le reste ça va j'ai en gros compris, function() dit qu'il faut executer la fonction passer en paramettre, mais cible je vois pas vraiment à quoi ça correspond.

            Une nouvelle question pourquoi mettre ça dans un eval???? (parceque ça marche mais bon s'pas ça que je veux savoir :lol: )
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              1 juin 2006 à 16:58:34

              cible en toute theorie c'est un element recuperer par un document.getElementById('idCible'); il met ca dans un eval parcequ'il sait pas faire autrement c'est pour passer le parametre sans qu'il soit ecrasé enfin c'est tendu d'expliquer en 2lignes

              pour changer le eval c'est le bordel, a ce niveau la faut faire 2 trois tests avec l'integralité de ton code

              pour ce qui est de cible regarde ailleur dans le script si il est pas defini ailleurs (genre dans fcttest())
              • Partager sur Facebook
              • Partager sur Twitter

              [js]Ligne incomprehensible

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown