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 :

className et feuille de style externe


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut className et feuille de style externe
    bonjour
    je souhaite changer la classe d'un élément en javascript, j'ai bien sur trouvé className seulement ca ne fonctionne que si le style est déclaré dans l'en-tête de ma page et pas si je fais appel à une feuille css externe

    j'ai cherché pendant une heure sur le net sans trouver, à ma grande surprise, la moindre remarque à ce propos.

    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
    <html>
    <head>
    	<title>Page test</title>
    	<link rel="stylesheet" type="text/css" href="inc/style.css" />
    	<script type="text/javascript">
    		function InputIsInteger(Objet, Cible, Class){ 
    			if(Objet.value.toString().search("^[0-9]+$") == 0){
    				Objet.className = '';
    				document.getElementById(Cible).style.display = 'none';
    			}else{
    				Objet.className = Class;
    				document.getElementById(Cible).style.display = '';
    			}
    		}
    	</script>
    </head>
     
    <body>
    <form>
    	<input name="Numero" type="text" onkeyup="InputIsInteger(this, this.name, 'InputError')"/>
    	<img id="Numero" src="img/cross.png" style="display:none;"/>
    </form>
    </body>
    </html>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .InputError {
    	border:1px solid #f00;
    }

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    ça serait une nouveauté ...

    Ton souci provient plutot de ton test ...

    ta syntaxe de regExp n'est pas bonne il faut soit passer par new RegExp soit par la syntaxe avec le delimiteur /:

    de plus pourquoi passer le name pour le reprendre en id ???
    passer une seule fois this suffit :
    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
    <html>
    <head>
    	<title>Page test</title>
    	<link rel="stylesheet" type="text/css" href="style.css" />
    	<script type="text/javascript">
    		function InputIsInteger(Objet, Class){ 
    			if(Objet.value.toString().match(/^[0-9]+$/)){
    				Objet.className = '';
    				Objet.style.display = 'none';
    			}else{
    				Objet.className = Class;
    				Objet.style.display = '';
    			}
    		}
    	</script>
    </head>
     
    <body>
    <form>
    	<input name="Numero" type="text" onkeyup="InputIsInteger(this,  'InputError')"/>
    	<img id="Numero" src="img/cross.png" style="display:none;"/>
    </form>
    </body>
    </html>
    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 !

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    Mais encore ?

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    reponse précédente éditée ...
    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é
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    ce n'est pas l'input qui est caché/affiché, c'est l'image (qui a pour id le nom de l'input) ; avec ton code mon input disparait si la syntaxe est bonne, ce qui n'est pas l'effet voulu

    de plus mon test fonctionnait (même si ce n'est pas le méthode optimale) puisque l'image s'affichait quand la valeur entrée n'était pas un nombre entier positif)

    donc je repose ma question (avec un code épuré pour éviter tout malentendu)
    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
    <html>
    <head>
    	<link rel="stylesheet" type="text/css" href="inc/style.css" />
    	<script type="text/javascript">
    		function InputIsInteger(Objet, Class){ 
    			if(Objet.value.toString().match(/^[0-9]+$/))
    				Objet.className = '';
    			else
    				Objet.className = Class;
    		}
    	</script>
    </head>
     
    <body>
    <form>
    	<input type="text" onkeyup="InputIsInteger(this, 'InputError')"/>
    </form>
    </body>
    </html>

  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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    A priori il semblerait que IE n'aime pas un id = au name d'un autre objet

    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
    <html>
    <head>
    	<title>Page test</title>
    	<link rel="stylesheet" type="text/css" href="style.css" />
    	<script type="text/javascript">
    		function InputIsInteger(Objet, Class){ 
     
    			if(Objet.value.toString().match(/^[0-9]+$/) ||  Objet.value.length==0){
    				Objet.className = '';
    				document.getElementById(Objet.name+'img').style.display = 'none';
    			}else{
    				Objet.className = Class;
    				document.getElementById(Objet.name+'img').style.display = 'block';
    			}
    		}
    	</script>
    </head>
     
    <body>
     
     
    	<input name="Numero" type="text" onkeyup="InputIsInteger(this,  'InputError')"/>
    	<img id="Numeroimg" src="cross.jpg" style="display:none;" />
     
    </body>
    </html>
    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é
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    en effet.... mais malheureusement ça ne change rien si je met un autre nom pour la variable

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    Je ne comprends pas bien ton histoire de 'css externe'. Peut-tu nous en dire plus ?
    J'emploie ceci dans une classe qui charge sa propre css en modifiant le DOM.

    Cette méthode est full DOM, il n'y a qu'un hack pour sa majesté IE.
    Tu remplace cssClassName par le nom de ta variable, of course.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Objet.setAttributeNode(document.createAttribute('Class'));
    Objet.setAttribute('class', cssClassName);
    Objet.setAttribute('className', cssClassName); //IE Hack

  9. #9
    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 659
    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 659
    Billets dans le blog
    1
    Par défaut
    je n'ai jamais rencontré de problème particulier avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.className=nomdecalsse
    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 !

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    313
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 313
    Par défaut
    bah oui, normallement les deux fonctionnent

  11. #11
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 102
    Par défaut
    problème résolu, bien que je comprenne pas bien le pourquoi du comment

    explications :
    j'ai défini un style général pour les input
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    input[type=text] {
    	border:1px solid #ccc;
    	-moz-border-radius:2px;
    }
    ne connaissant pas toutes les subtilités du css j'avais défini ma classe de façon classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    .InputError {
    	border:1px solid #f00;
    }
    il faut en fait mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    input[type=text].InputError {
    	border:1px solid #f00;
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Feuille de style externe et PHP
    Par Jinkas dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 27/09/2011, 11h53
  2. Associer une feuille de style externe à un code svg généré
    Par Bownobo dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 07/09/2009, 13h21
  3. [TinyMCE] Feuille de style externe
    Par anfalsh dans le forum Bibliothèques & Frameworks
    Réponses: 0
    Dernier message: 26/08/2009, 15h55
  4. Récupérer feuille de style externe css
    Par fasfousba dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 07/06/2008, 15h00
  5. link et feuille de style externe
    Par fasfousba dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/06/2008, 09h13

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