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 du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 53
    Points
    53
    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 expérimenté Avatar de willoi
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2006
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    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 du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 53
    Points
    53
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    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 ...

  5. #5
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 53
    Points
    53
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    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 ?

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 355
    Points : 1 639
    Points
    1 639
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    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)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    oulà usine à gaz ...
    un split serait bien plus simple ...

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    Billets dans le blog
    1
    Par défaut
    suffit de faire le split sur un regExp ...

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    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

  15. #15
    Membre du Club
    Inscrit en
    Août 2004
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 51
    Points : 53
    Points
    53
    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 régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2003
    Messages : 109
    Points : 104
    Points
    104
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 663
    Points
    66 663
    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)

+ 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