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 :

Affecter une valeur à un style en ayant le nom du style et la valeur en variable ?


Sujet :

JavaScript

  1. #1
    Membre averti
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Par défaut Affecter une valeur à un style en ayant le nom du style et la valeur en variable ?
    Bonjour,

    Comment affecter une valeur à un style en ayant le nom du style et la valeur dans une variable ?

    Le code ci-dessous fonctionne sous Firefox mais pas sur IE, existe t'il une autre syntaxe ?

    objY.style[p] = v;
    'P' contenant le nom du style et 'v' la valeur.

    Merci pour vos réponses...

  2. #2
    Membre Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    je comprends pas vraiment ce que tu veux exactement ,
    tu cherche a changer le style d un element par javascript c est ca ?

  3. #3
    Membre averti
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Par défaut
    Citation Envoyé par willoi
    je comprends pas vraiment ce que tu veux exactement ,
    tu cherche a changer le style d un element par javascript c est ca ?
    Oui c'est ça, mais le nom de mon style est dans une variable !

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    avec eval mais pas très beau ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval('objY.style.'+monstyle)= v
    sinon faudrait passer par un parsing du cssText ...
    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 averti
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Par défaut
    Ecrit comme cela, ça fonctionnerais dans certain cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    eval('objY.style.'+p+'='+v);
    Mais cela ne fonctionne pas pour les noms de style qui contiennent un '-', comme 'border-right' par exemple.

    Une autre idée ?

  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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    parceque ce n'est pas border-right en javascript mais borderRight.

    je fouille dans mes archives ...

    tu passes par des classes ou par le style dans la balise ?
    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 Expert Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Par défaut
    oui en effet en cas de classe tu peux utiliser la propriete className,
    ce qui me parait le plus simple.

  8. #8
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    je pensais audelà du className à attaquer directement le fichier css
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    var st=document.styleSheets[0];
    var ru=st.rules?st.rules:st.cssRules;
    var Classe=(ru[0].selectorText) 
    var Props= (ru[0].style.cssText)
    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 !

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    Et ça, ça fonctionnerais pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    function setStyle(elementHtml, styleName, styleValue){
        var style=elementHtml.getAttribut('style');
        var start=style.lastIndexOf(styleName);
        if(start){
            start+=styleName.length+1;
            var end=style.indexOf(';', start);
            if(!end) end=style.length;
            style=style.subString(0, start)+':'+styleValue+style.subString(end);
        }else style+=styleName+':'+styleValue+';';
        elementHtml.setAttribut('style', style);
    }
     
    setStyle(ObjY, p, v);

  10. #10
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    oulà usine à gaz ...
    un split serait bien plus simple ...
    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 !

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    Je connais pas de méthode pour récupérer l'index d'une valeur dans un Array, si ce n'est en coder une.

    Le deuxième défaut en passant par un split, c'est que les séparateur (';' et ',') peuvent être précédé ou suivi d'espaces (ou pas). Donc on se retrouve avec des éléments pouvant avoir des espaces avant ou après le nom ou la valeur du style. Ce qui facilite pas la recherche.

  12. #12
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    suffit de faire le split sur un regExp ...
    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 !

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    En effet, j'y avais pas pensé (et pour cause, je suis incapable d'en produire une correct).

    Mais y a toujours la recherche d'index a coder, non ?

  14. #14
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    ben non si tu fais un split tu récupères les éléments séparés ... après au pire juste un substring pour le premier caractère et un join
    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 !

  15. #15
    Membre averti
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Par défaut
    Finalement comme mon but était de cloner un 'Element', plutot que de mis prendre propriété par prorpriété, je fait tout d'un coup avec ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    var oY = document.createElement("label");  
    if(oY.style.setAttribute) { 
            oY.style.setAttribute('cssText', oX.style.cssText);   
    }
    else  {
            oY.setAttribute("style", oX.style.cssText);	
    } 	
    document.body.appendChild(oY);
    Où oX est mon 'Element' à cloner !

    Merci pour votre aide.

    @+

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Par défaut
    Remarque, si tu te lance dans les regXP, il suffit de faire un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    var styleString=styleName+':'+styleValue+';';
    style=style.replace(REGXP, styleString);
    if(!style.IndexOf(styleString)) style+=';'+styleString

  17. #17
    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 658
    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 658
    Billets dans le blog
    1
    Par défaut
    pourquoi pas direct un cloneNode(true) ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var oY = oX.cloneNode(true)
    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 !

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

Discussions similaires

  1. Affecter une valeur à un input type="file" ?
    Par rocs dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/08/2005, 11h10
  2. Affecter une valeur à un input type text
    Par mr.t dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 01/06/2005, 15h18
  3. Réponses: 4
    Dernier message: 07/04/2005, 13h37
  4. Affecter une valeur à un radiobutton svp
    Par bigfoot dans le forum Bases de données
    Réponses: 5
    Dernier message: 30/12/2004, 11h17
  5. [scriplet] affecter une valeur par un bean:write
    Par viena dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 25/11/2004, 16h29

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