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 :

incompatibilité backgroundcolor sous IE8


Sujet :

JavaScript

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut incompatibilité backgroundcolor sous IE8
    Bonjour,

    J'ai un petit problème sous IE8(pour changer) sur mon site.

    voici le site en question:http://calendrier.ventana-aerospace.fr
    mdp : temp

    Il faut sélectionner du personnel pour voir leurs agendas.


    En effet, j'ai fais un agenda et j'essaye de faire en sorte que quand on click sur un jour, ça change la couleur de fond de toute une colonne.

    Ce que j'ai fais marche sous ff3.6.12

    Voici le code javascript qui fais ce que je veux faire:
    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
    //je mémorise la couleur et le nom de l'objet que je change lors de la selection
    var ancienne_couleur;
    var ancienne_date="";
    //change la couleur d'arriere plan si selectionné ou déselectionné
    function selectionner_jour(date){
    	var objet_ancien = document.getElementsByName(ancienne_date);
    	var objet_nouveau = document.getElementsByName(date);
     
    	if(ancienne_date!="")
    		for(var i=0;i<objet_ancien.length;i++)
    			objet_ancien[i].style.backgroundColor = ancienne_couleur;
    	if(date!=ancienne_date){
    		ancienne_couleur = objet_nouveau[0].style.backgroundColor;
    		ancienne_date = date;
    		for(var i=0;i<objet_nouveau.length;i++)
    			objet_nouveau[i].style.backgroundColor = "aqua";
    	}
    	else
    		ancienne_date="";
    voici un appel à la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    selectionner_jour('1292972400');
    Si quelqu'un a une idée sur ce qui ne va pas...

  2. #2
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 101
    Par défaut
    Salut,

    je ne vois aucune instruction à problème dans le bout de code que tu montres.
    Dans le doute, remplace la valeur "aqua" par #00FFFF

    http://www.w3schools.com/css/css_colornames.asp

    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    J'ai essayé de changer mais c'est toujours pareil.

    Après l'évènement qui déclenche l'appelle à la fonction c'est un onmousedown sur un <td>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo "<td name=\"".$date_parcouru."\" onmousedown=\"selectionner_jour('".$date_parcouru."');\" style=\"cursor:pointer;background-color:".((date("W",$date_parcouru)%2==0)?"Silver":"").";\">"

  4. #4
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td name="'.$date_parcouru.'" onmousedown="selectionner_jour(\''.$date_parcouru.'\');" style="cursor:pointer;background-color:'.((date("W",$date_parcouru)%2==0)?"silver":"transparent").';">'
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Désolé mais je ne vois pas ce qui change :/

    Après si c'est au niveau syntaxe que tu veux me corriger, ça marche sous firefox donc je pense pas que ce soit ça..

  6. #6
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    on peut voir le html généré ?
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Bien sûr!

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
    <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
    <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design/design.css" />
    <script type="text/javascript">
    <!--
    function PopupWindow(source, strWindowToOpen){
    	var strWindowFeatures = "toolbar=no,resize=no,titlebar=no,";
    	strWindowFeatures = strWindowFeatures + "menubar=no,width=413,height=299,maximize=null";
    	window.open(strWindowToOpen, '', strWindowFeatures); 
    } 
    //je mémorise la couleur et le nom de l'objet que je change lors de la selection
    var ancienne_couleur;
    var ancienne_date="";
    //change la couleur d'arriere plan si selectionné ou déselectionné
    function selectionner_jour(date){
    	var objet_ancien = document.getElementsByName(ancienne_date);
    	var objet_nouveau = document.getElementsByName(date);
     
    	if(ancienne_date!="")
    		for(var i=0;i<objet_ancien.length;i++)
    			objet_ancien[i].style.backgroundColor = ancienne_couleur;
    	if(date!=ancienne_date){
    		ancienne_couleur = objet_nouveau[0].style.backgroundColor;
    		ancienne_date = date;
    		for(var i=0;i<objet_nouveau.length;i++)
    			objet_nouveau[i].style.backgroundColor = "#00FFFF";
    	}
    	else
    		ancienne_date="";
    }
    -->
    </script>
    <body>
    	<div id="personnes">
    		<a href="index.php"><img src="design/retour.png" style="border:none;" alt="retour à l'acceuil"/></a>
    		<h5>CIMB</h5><li >1</li><li >3</li><h5>GTA</h5><li >2</li>	</div>
     
    	<div id="calendrier">
    		<table>
    		<td id="mois"><h3>November</h3><table><td name="1289862000" onmousedown="selectionner_jour('1289862000');" style="cursor:pointer;background-color:Silver;">Ma</td><td name="1289948400" onmousedown="selectionner_jour('1289948400');" style="cursor:pointer;background-color:Silver;">Me</td><td name="1290034800" onmousedown="selectionner_jour('1290034800');" style="cursor:pointer;background-color:Silver;">Je</td><td name="1290121200" onmousedown="selectionner_jour('1290121200');" style="cursor:pointer;background-color:Silver;">Ve</td></table></td>		</table>
     
    	</div>
    </body>
    bon j'ai coupé le code quand même car il y a un <td> par jour et ce sur 3 mois et 3 personnes

    Je remet même l'accès au site avec le mot de passe temp

  8. #8
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Ta structure HTML est mauvaise. Tes table n'ont pas de tr.
    D'autre part, name n'est pas autorisé pour un td et est pour IE de type id, il ne doit donc pas commencer par un chiffre.
    Enfin, modifier les styles d'une table de grande taille est déconseillé avec IE : cela oblige à faire des reflows ce qui est très lourd et du coup très lent.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Ah en effet :s

    Pour les <tr> c'est parce que j'ai fais un ajout des jours avec leurs deux premières lettres il n'y a pas longtemps et j'ai oublié de les y mettre.
    La suite de la table en contient.

    je modifie tout ça et je vous dis

    [edit] : Un identifiant ne doit il pas être unique? Cela ne répond pas à mes besoins :/
    Dois-je rajouter des <span name=""></spand> dans mes <td>?

  10. #10
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    ça ne marche toujours pas en rajoutant des <span> dans les td..

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Pourquoi tu ne mets pas plutôt des Id ça serait plus simple à tes TD ou SPAN comme tu veux, et au lieu de getElementsByName faire un getElementById ?

  12. #12
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    parce que j'ai plusieurs fois le même name sur mes td ou span et un Id est unique.

    getElementById ne permet de sélectionner qu'un seul élément.

    pour sélectionner toute une colonne je sélectionne tous les td ayant pour attribut name="0562398400" par éxemple.

  13. #13
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Novembre 2010
    Messages : 207
    Par défaut
    Tu connais le framework javascript jQuery ? Si oui, utilises les classes

  14. #14
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Oui, ou plus simplement, crées une fonction getByClass, par exemple :
    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
    var getByClass = function(conteneur,cl){
    	if(typeof conteneur === 'string'){
    		conteneur = document.getElementById(conteneur);
    	}
    	if(conteneur.getElementsByClassName){
    		getByClass = function(conteneur,cl){
    			if(typeof conteneur === 'string'){
    				conteneur = document.getElementById(conteneur);
    			}
    			return conteneur.getElementsByClassName(cl);
    		};
    		return conteneur.getElementsByClassName(cl);
    	}
    	else{
    		getByClass = function(conteneur,cl){
    			if(typeof conteneur === 'string'){
    				conteneur = _$(conteneur);
    			}
    			var tabElems = [], allElems = conteneur.getElementsByTagName('*'), allLength = allElems.length;
    			while(allLength--){
    				if(allElems[allLength].className.indexOf(cl)>-1){
    					tabElems.push(allElems[allLength]);
    				}
    			}
    			return tabElems.reverse();
    		};
    		var tabElems = [], allElems = conteneur.getElementsByTagName('*'), allLength = allElems.length;
    		while(allLength--){
    			if(allElems[allLength].className.indexOf(cl)>-1){
    				tabElems.push(allElems[allLength]);
    			}
    		}
    		return tabElems.reverse();
    	}
    };
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  15. #15
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Arf j'ai du mal à comprendre à quoi sert la fonction que tu me propose :/

    Qu'est ce que ça m'apporte de plus qu'un simple getElementsByClass?

    Le conteneur c'est document?

    cl c'est le nom de la classe?

    Je ne connais pas le JQuery :s

  16. #16
    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 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 660
    Billets dans le blog
    1
    Par défaut
    ben, c'est surtout que getElementsByClass n'existe pas nativement en javascript
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  17. #17
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par zenico64
    Qu'est ce que ça m'apporte de plus qu'un simple getElementsByClass?
    Le fait d'être cross-browser... (ce qui me semble assez utile )

    Oui, cl est la classe recherchée mais conteneur, c'est l'élément dans lequel tu recherches la classe (donc oui, ça peut être document, mais aussi un id ou un élément HTML ).

    EDIT :
    @Spaffy : si, pour les dernières versions des navigateurs, seul IE8 n'implémente pas getElementsByClassName
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  18. #18
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	if(conteneur.getElementsByClassName){
    Si tu me dis que getElementsByClassName n'est pas disponible sous IE8 ça ne risque pas de régler mon problème étant donné que je cherche a adapter mon code pour qu'il fonctionne sous IE8...

  19. #19
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par zenico64 Voir le message
    Si tu me dis que getElementsByClassName n'est pas disponible sous IE8 ça ne risque pas de régler mon problème étant donné que je cherche a adapter mon code pour qu'il fonctionne sous IE8...
    C'est bien pour ça qu'il y a un else !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  20. #20
    Membre confirmé
    Inscrit en
    Novembre 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 105
    Par défaut
    Arf ouais désolé...

    Niveau utilisation il faut que j'appelle cette fonction qui va me retourner un cross-Browser (ou un tableau de cross-Browser) pour après l'utiliser pour faire par exemple tableau[1].style.backgroundcolor ?

    Après j'ai mal compris ce qu'est un cross-Browser.. Un élément compatible sous tous les navigateurs?

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

Discussions similaires

  1. Incompatibilité sous IE8 (ok pour Chrome et Firefox)
    Par sebastien2975000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 16/04/2014, 09h33
  2. incompatibilité <!DOCTYPE HTML 4.01 Transitional//EN"> avec taille image en % sous ie8
    Par simon1234 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 24/10/2009, 15h25
  3. [XHTML 1.0] probleme affichage tableau sous IE8
    Par canary dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/04/2009, 14h39
  4. Mon onmouseover ne fonctionne pas sous IE8
    Par idamarco dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/03/2009, 12h35
  5. outils pour debugger sous ie8
    Par narkhor dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 03/07/2008, 22h49

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