Javascript et IE 6 ou 7

Signaler
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008
-
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008
-
Bonsoir à toutes et à tous !
J'ai créé une page web (entre autres) pour mon boulot sous firefox, et seule une partie du javascript fonctionne.
Je pense que le problème se situe au niveau des id qui ne sont pas reconnus par ie dans certaines circonstances.

Comment passer outre ?
Je ne vous cache pas que c'est urgent, alors une idée frétille dans votre esprit ? N'hésiter pas, c'est mauvais pour la santé !

Voici le code source de la page : (remplacez les images du menu si besoin est)
Les effets des boutons du menu ne fonctionneront pas sans les sources JS scriptaculous, mais le code javascript qui pose problème est quand à lui présent sur la page. (il vaut mieux)

(Je précise tout de suite que le javascript est activé sur mon navigateur IE, donc je ne pense pas que le problème puisse venir de là ^^)
---------------------------------------------

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
    <meta name="language" content="french" />
    <title>Casa Mamma</title>
    <meta name="description" content="Le site des givrés du premier de l'an" />
    <meta name="keywords" content="givrés, dunkerque" />
    <meta name="author" content="MeMento" />

    <link href="style1024.css" rel="stylesheet" type="text/css">
    <!-- PE :  Faire au cas par cas pour les résolution : JAVASCRIPT + PHP pour choisir le style.css  -->
       
    <script src="js/prototype.js" type="text/javascript"></script>
    <script src="js/scriptaculous.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        //Déclaration des variables globales :
        variable1=1;
        variable2=1;
        variable3=1;
        variable4=1;
       
        titredem1='alexandre';
        titredem2='alexandre';
        titredem3='alexandre';
        titredem4='alexandre';
       
       
        function charger1(){
        if (variable1 == 1){
                titredem1 = document.getElementById("item1").parentNode.parentNode.innerHTML;
                document.getElementById("item1").parentNode.parentNode.innerHTML+='<tr><td >[uncredo.html ]</td></tr><tr><td>[vousconseiller.html ]</td></tr><tr><td>[vousaccompagner.html ]</td></tr>';
                new Effect.Appear('notredemarche');
                variable1*=-1;
            }else{
                document.getElementById("item1").parentNode.parentNode.innerHTML=titredem1;
                new Effect.Appear('notredemarche');
                variable1*=-1;
            }
        }

        function charger2(){
        if (variable2 == 1){
                titredem2 = document.getElementById("item2").innerHTML;
                document.getElementById("item2").innerHTML+='<tr><td>[audit.html ]</td></tr><tr><td>[actionsetoutils.html ]</td></tr><tr><td>[mediatraining.html ]</td></tr><tr><td>[formation.html ]</td></tr>';
                new Effect.Appear('nosservices');
                variable2*=-1;
            }else{
                document.getElementById("item2").innerHTML=titredem2;
                new Effect.Appear('nosservices');
                variable2*=-1;
            }
        }

        function charger3(){
        if (variable3 == 1){
                titredem3 = document.getElementById("item3").innerHTML;
                document.getElementById("item3").innerHTML+='<tr><td>[entreprises.html ]</td></tr><tr><td>[institutions.html ]</td></tr><tr><td>[formations.html ]</td></tr>';
                new Effect.Appear('nosreferences');
                variable3*=-1;
            }else{
                document.getElementById("item3").innerHTML=titredem3;
                new Effect.Appear('nosreferences');
                variable3*=-1;
            }
        }

        function charger4(){
        if (variable4 == 1){
                titredem4 = document.getElementById("item4").innerHTML;
                document.getElementById("item4").innerHTML+='<tr><td>[votreequipe.html ]</td></tr><tr><td>[veniralacasa.html ]</td></tr>';
                new Effect.Appear('nouscontacter');
                variable4*=-1;
            }else{
                document.getElementById("item4").innerHTML=titredem4;
                new Effect.Appear('nouscontacter');
                variable4*=-1;
            }
        }
    </script>
</head>

   

            ----

                ,
                ,
       

        ----

                            <table height="100%" border=0 align="center">   
                    ----

                       ,
<!--ICI on met une nouvelle table -->                       
                            <table height=\"100%\" border=0 align=\"center\">
                            ----

                                ,
                            ----

                           
                           

                        </td>
                    </tr>
                    <tr>
                        <td height=34 class="casemenu">
                                                       
                            ----

                                ,
                            ----

                           
                           

                        </td>
                    </tr>
                    <tr>
                        <td height=34 class="casemenu">
                                                        ----

                                ,
                            ----

                           
                           

                        </td>
                    </tr>
                    <tr>
                        <td height=34 class="casemenu">
                                                        ----

                                ,
                            ----

                           
                           

                        </td>
                    </tr>
       
        </table>               
            </td>
        </tr>
<!-- onmouseover="new Effect.ShakeVerticalAmortie(this)"-->
       
       
    </table>   

</html>

14 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Bonjour,
plusieurs points a signaler




des id qui ne sont pas reconnus par ie dans certaines circonstances.




là faut pas rêver quand même...




Je ne vous cache pas que c'est urgent...




ceci n'est pas un argument pour obtenir des réponses...




...le code javascript qui pose problème...




oui mais quel problème ?




titredem1 = document.getElementById("item1").parentNode.parentNode.innerHTML




pourquoi ne pas mettre un ID au TR précédent ? on utile habituellement...

document.getElementById("item1") en direct






;0)
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

OK.. encore un cyber cowboy...

Tu as soulevé trois points.. (en passant sur le coup du "dire que c'est urgent, c'est pô bien !")

1) D'accord, mis à part le fait que je n'suis sans doute pas assez éveillé à ton goût... en quoi ta remarque fait-elle avancer le chmilblique ?
=> on est d'accord, là ça servait à rien.

ensuite...

2)Aucun problème ? Tu n'as sans doute pas testé le code sous IE... ce qui était le but de la manoeuvre... tampis.

Et enfin...

3) Le coup des deux "parentNode".
(Encore une fois, tu ne l'as pas testé sous IE... quelle perte de temps !)

En mettant l'id sur la balise <table>, IE ne récupère apparement pas l'id (apparement, c'est précisément pourquoi je voulais l'avis d'autre développeurs).
C'est pourquoi, l'utiliser "en direct" comme tu le sousentends si brillament... ne sert à rien.
J'ai testé l'id sur les trois niveaux : table, tr, td. Sans succès.

En espérant avoir assez rapidement l'avis de quelqu'un qui s'y connait. (et d'avance avec mes remerciements les plus sincères :D )

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

    petoleteam++

    >>En espérant avoir assez rapidement l'avis de quelqu'un qui s'y connait
    qui s'y connaisse plus que petoleteam ? sont pas nombreux !

    j'allais faire quasi les mêmes remarques que petoleteam, je ne vais
       donc pas en ajouter.

    ah... si :





    >>En mettant l'id sur la balise IE ne récupère apparement pas l'id
       ben si...
                <table id=\"toto\">
                    ----
1,
               

                <script type="text/javascript">
                    alert(document.getElementById("toto").rows.length);
                </script>

    et lors de la mise au point :


¡————————¡——————————————————————————————————————————————————————————¡
|FireFox |regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
| | |
| | et mieux, télécharger FireBug |
¦————————¦——————————————————————————————————————————————————————————¦
|Internet|activer le deboggage : Outils/options Internet/Avancés |
|Explorer| dans la liste, sous "Navigation" : décocher |
| | ° Afficher une notification de chaque erreur de script |
| | ° Désactiver le débogage de Scripts (Internet Explorer) |
| | |
| | et mieux, télécharger le Debogger IE |
¦————————¦——————————————————————————————————————————————————————————¦
|K—Meleon|regarder la "console d'erreurs" |
| | Outils / Console d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Opera |regarder la "console d'erreurs" |
| | utils / Asole d'erreurs |
¦————————¦——————————————————————————————————————————————————————————¦
|Safari |regarder Debug / Show JavaScript Console |
| | |
| |modif Fichier "Support:\Documents and Settings\utilisateur|
| |\Application Data\Apple Computer\Safari\Preferences.plist"|
| | y ajouter <key>IncludeDebugMenu</key> |
| | <true/> |
!————————!——————————————————————————————————————————————————————————!










<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

Salut.
Merci pour la rapidité de ta réponse ! :D

Par contre le lien vers le debogger IE est cassé..
Je n'arrive toujours aps à voir ce qui cloche dans le code.. Aurais-tu une idée ?

Merci 1000 fois en tous cas !
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
la page te propose une possibilité de recherche,
et si tu mets "debugger" : nouvelle adresse ?
<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>Aurais-tu une idée ?
    script écrit de manière illisible...   
            si tu aérais ( retour à la ligne... ) et nous mettais
            uniquement le nécessaire... peut-être...
    et ce qu'a dit PetoleTeam ?


<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

Dans le javascript :  (bugg au niveau de la ligne 2, celle qui commence par document.getElementById  )

...

uncredo='uncredo';
document.getElementById("item1").innerHTML+='<tr><td >[uncredo.html ]</td></tr>';

Dans le code Html :
...

                            ----

                                ,
                            ----

                           
                           

=> C'est au niveau de la ligne javascript, que se situe apparement le problème. ça tourne nikel sous firefox, mais sous IE il bloque à la ligne en question.
J'ai pensé que cela pouvait venir du :  \'  que j'avais mis à la place du simple quote  '  .
J'ai donc créé une variable uncredo.
Je sais que ce n'est aps la façon la plus élégante de coder.. mais bon la je suis en phase de test.. :D

Quand à la question de PetoleTeam, comme je l'ai dit plus haut, le parentNode n'y est apparement pour rien.

Merci encore de t'intéresser à mon cas :D
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
Hey !
I'm a poor lonesome Cow-Boy
J'ai lu il y a longtemps que la propriété innerHTML ne faisait pas partie du W3C DOM, mais qu'elle nous aidait bien à modifier le contenu d'élément.

IE est pour une fois plus restrictif, pas de salut en attaquant directement la TABLE avec innerHTML, donc attaque
plutôt
la TD en déplaçant l'ID sur celle ci
var O_Td = document.getElementById( "id_de_la_TD");
O_Td.innerHTML = "le contenu de la cellule";

Le must serait de respecter les recommandations du W3C, mais il faudrait en écrire bien plus avec les appendChild et autres...

Mais ce ne sont que des écrits de...
I'm a poor lonesome Cow-Boy


;0°)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
déjà, ----
.....,

                et il me semble bien que IE tienne au tbody.
d'ailleurs innerHTML, il vaut mieux éviter,
        :  insertRow,  insertCell,  createElement,  appendChild...
exemple ici

<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
téléscopage avec PetoleTeam ( salutatoi ! )
poor peut-être, je ne puis juger, mais lonesome, sur ce coup là : non.
<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
14
Salut A toi aussi The Bultez,
Ma
pauvreté m'enrichit, comme disait je ne sais plus qui...
...mais quoi qu'il
arrive "l'avis de un n'arrête pas le pélerin", la preuve je réponds encore alors
que rien ne nous y oblige, mais bon ingratitude quand tu nous tient!




;0)
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
>>Ma pauvreté m'enrichit, comme disait je ne sais plus qui...
    probablement Fucius ( qui n'était pas aussi con que cela )

>>la preuve je
réponds encore alors que rien ne nous y oblige
    tu as aussi compris que répondre, aider à résoudre...
          ne rapporte rien d'autre qu'aider... parfois un merci ?
    tu es trop gentil, et sur ce coup ci, les sarcasmes du questionneur
          m'eussent totalement rebutés, et je n'aurai plus répondu.
          je n'irais d'ailleurs pas beaucoup plus loin que ce que j'ai
          déjà fait... probablement trop, compte tenu de son attitude
          à l'égard de quelqu'un qui ne cherchait qu'à l'épauler.





<hr />                Cordialement            Bul         [mon Site]     [M'écrire]
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

Thanks Mister Luke !

En effet, je viens de résoudre mon problème, et j'ai pu constater que innerHTML ne faisait pas partie du DOM.
My apologies to the W3C !
Quand aux methodes du style appendChild,... en effet, c'est propre et parfaitement clair.
Pour ma part, je n'ai eu besoin que de restructurer mon code en remplaçant les éléments propres aux <table>, par des
... et tout roule à présent !

RQ : Pour les id sur les <TD>, le problème persistait.

Je retiendrais donc cette séquence morale : Respect the law, respect DOM and W3C !

Et merci à vous deux pour vos pistes, même si j'ai finalement pu me débrouiller.
Standing Ovation !
Messages postés
15
Date d'inscription
samedi 27 janvier 2007
Statut
Membre
Dernière intervention
25 avril 2008

Pour ce qui est de mon ingratitude, désolé, mais au premiers abords, ce sont plutôt des sarcasmes teintés d'arrogance que j'ai sentis.
Pendant quelques secondes, j'ai bien cru avoir Dieu au bout du fil...
J'ai alors rétorqué par ce qui me parraissait être la façon la plus adaptée à mon interlocuteur.

Je prends alors ce premier commentaire comme une maladresse et regrette alors ma réaction (j'espère ne pas être le seul).

Merci encore à vous deux.