ForEach avec IE

Signaler
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
-
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
-
Bonjour,

Les dernières versions de javascript supportées par  les navigateurs Firefox,Safari,Opera offrent la possibilité d'utiliser forEach (qui permet d'obtenir les éléments d'un tableau les uns aprés les autre sans utiliser d'itérateur, à la manière de son homologue php).

Soit directement : ['foie gras','cagouille','grattin dauphinois'].forEach(function(i){ glups('verre de sancerre',i); });

soit en ayant préalablement écrit :
if (!Array.prototype.forEach) {
    Array.prototype.forEach = function(fn) {
        for (var i in this)
            fn.call(this, this[i], i, this);
    };
}
pour définir forEach au navigateur.

Or c'est là qu'est le probléme, IE refuse obstinément cette définition (tester sous IE7).

D'où deux questions :
Pourquoi ?
Comment peut-on pallier au problème ?

Merci de vos réponses.



Sapakus

3 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
34
Bonjour,

pas réellement pu tester à cause de   fn.call...   c'est quoi le call ?

mais ci-dessous un machin qui peut-être correspond à ce  que tu veux faire ?

<textarea     id='txt'
              style='width:90%;height:50%'></textarea>
<script>
Array.prototype.chaquePoste = function ( executer )
{   for ( var elem=0; elem<this.length; elem++ )
    {    executer( elem, this[elem] );    }
}
new Array( 'un', 'deux', 'trois' ).chaquePoste
    (    function( num, poste )
        {    document.getElementById('txt').value +=   
                '(' +
                num +
                ')=' +
                poste +
                '\r\n';   
        }
    );
</script>

   perso, d'ailleurs, j'avais d'abord mis :


    for ( var elem in this )

    {    if ( elem < this.length )     j'avais du ajouter ça, si qulequ'un peut m'expliquer !( essayez sans )

        {    executer( elem, this[elem] );    }

    }

 

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
16
Bonjour,
il faut aller voir
Référence de
JavaScript 1.5 Core:Objets globaux:Array:forEach

plein d'infos...
;O)
Messages postés
96
Date d'inscription
mercredi 20 août 2003
Statut
Membre
Dernière intervention
10 février 2011
3
Merci pour vos réponses, je suis "surbouquet" en ce moment et je dois malheureusement différer le suivie de ce post pour pouvoir tester les pistes que vous me proposez. Je dois donc remettre ça à plus tard et vous dit à bientôt.

S
apakus