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 :

style a la valeur null et variable interne


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut style a la valeur null et variable interne
    Bonjour

    Tout d'abord voici mon code :

    Code php : 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
     
    <title> S1 - Test </title>
    <?php
    $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '');
    ?>
    <?php
    $sql = $bdd->query( "SELECT choses FROM machins ");
    $rep = $sql -> fetchAll() ;
    foreach( $rep as $result  ){
    echo
    '<strong style="color:red;text-align:center;margin-left:100;" >  ' . $result["choses"] . '  </strong>
    <button type="button"  onclick="test1(\'' . $result["choses"] . '\',this,aaa)" > tester  </button> 
    <button type="button" id="aaa" style="display:none" > test 2 </button>
    ';
    }
    ?>
    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 test1(param,objet,aaa)
    {
    var ospan = document.createElement('span') ;
    var otext = document.createTextNode('yes') ;
    ospan.appendChild( otext) ;
    objet.parentNode.replaceChild( ospan, objet) ;
    //la ligne ci dessous ne s'exécute pas , cela m'affiche une erreur "style a la valeur Null ou n'est pas un objet" :
    aaa.style.display = "" ;
    }
     
    function test2()
    {
    //ici je voudrais que le span creer grace à la function test1 redevient le button qu'il était
    }
    voila j'ai deux problème :

    1) cette ligne de mon code ne marche pas cela m'affiche "style a la valeur Null ou n'est pas un objet" :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     aaa.style.display = "" ;
    2) je voudrais créer une function test2 qui fera en sorte que le span créer grâce à la function test1 redevient le button qu'il était

    vous pouvez m'aidez svp ? merci

  2. #2
    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 : 54
    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
    Tout d'abord, merci de lire et appliquer Important : Les règles incontournables d'utilisation de ce forum : le code PHP ne nous intéresse pas, c'est le code HTML généré qui est utile !

    Ensuite, ton paramètre aaa, tu le définis où ?
    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

  3. #3
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    ben comme dit Bovino si tu ouvrais le source html dans ton navigateur tu y verrais plus clair.
    voilà la chose
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <button type="button"  onclick="test1('une valeur de result',this,aaa)" > tester  </button> 
    <button type="button" id="aaa" style="display:none" > test 2 </button>
    et là on vois de suite que le 3eme paramètre passé à la fonction est null
    aaa est une variable non définie.

    ça n'a donc aucune change de marcher. je suppose vu que aaa est la valeur de l'id du bouton suivant que ce que tu voulait écrire est
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <button type="button"  onclick="test1('une valeur de result',this,'aaa')" > tester  </button> 
    <button type="button" id="aaa" style="display:none" > test 2 </button>
    ce coup ci le troisième paramètre est un id. donc à priori c'est Ok quaf que c'est du code généré en php dans un foreach. on a donc toute le chance de se retrouver avec plusieurs objets avec le même id.
    c'est un problème que je te laisse régler

    je vais faire comme si tu avais des id uniques.
    dans ta fonction test1 le troisième paramètre est un id il faut donc récupérer l'objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function test1(param,objet,id) //<= le paramètre est un id
    {
      var ospan = document.createElement('span') ;
      var otext = document.createTextNode('yes') ;
      var aaa = document.getElementById(id); // <= ICI on récupère le bouton
      ospan.appendChild( otext) ;
      objet.parentNode.replaceChild( ospan, objet) ;
      aaa.style.display = "inline" ; // <= attention la valeur "" n'existe pas
    }
    Voici la liste des valeur possible pour display
    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
    none               The element will not be displayed at all
    box (or flex-box)  The element is displayed as a block-level flex container box
    block              The element is displayed as a block-level element (like paragraphs and headers)»
    flex               The element is displayed as a block-level flex container box
    inline             This is default. The element is displayed as an inline-level element (like span)
    inline-block       The element is placed as an inline element (on the same line as adjacent content), but it behaves as a block element
    inline-flex        The element is displayed as an inline-level flex container box
    inline-table       The element is displayed as an inline-level table
    list-item          The element is displayed as a list-item, which means that it has a bullet in front of it
    table              The element is displayed as a table
    table-caption      The element is displayed as a table caption
    table-cell         The element is displayed as a table cell
    table-column       The element is displayed as a table column
    table-column-group The element is displayed as a table column group (like <colgroup>)
    table-footer-group The element is displayed as a table footer row group
    table-header-group The element is displayed as a table header row group
    table-row          The element is displayed as a table row
    table-row-group    The element is displayed as a table row group
    inherit            The value of the display property will be inherited from the parent element
    A+JYT

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    oui je passe l'id directement en paramètre normalement sur mes autres pages ça marche alors que c'est la même méthode , mais sur la page test ça bloque je sais pas pourquoi :/

    et sur mes autre page le

    marche aussi xD

  5. #5
    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 : 54
    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
    Ce que tu fais est une incohérence dont l'interprétation va dépendre du bon vouloir de l'interprétation du navigateur.

    Dans l'appel de ta fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    onclick="test1('une valeur de result',this,aaa)"
    aaa est considéré comme une variable, variable qui n'a jamais été définie.
    Certes, les navigateurs qui sont quelque peu permissifs arrivent à "comprendre" que tu cherches l'élément dont l'id est aaa mais ça reste une très mauvaise pratique qu'il faut absolument éviter et remplacer par la solution préconisée par sekaijin.

    D'autant que cela laisse présager que tu es susceptible de commettre d'autres erreurs du même ordre, comme par exemple avoir plusieurs fois le même id dans la page (parce que affecter un attribut id dans une boucle foreach, c'est pas top...) ou d'avoir des attributs name avec cette valeur et dans ce cas, ça plante !

    Il faut donc être plus rigoureux dans l'écriture de son code et respecter les règles de base.
    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

  6. #6
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    Ah d'accord je vois mais comment faire pour éviter d'avoir plusieur id dans une boucle foreach ? xD

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2012
    Messages : 66
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Tout d'abord, merci de lire et appliquer Important : Les règles incontournables d'utilisation de ce forum : le code PHP ne nous intéresse pas, c'est le code HTML généré qui est utile !

    Ensuite, ton paramètre aaa, tu le définis où ?
    Ah oui désolé j'ai copier coller sans faire gaffe désolé xD

    bah là :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
     <button type="button" id="aaa" style="display:none" > test 2 </button>

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

Discussions similaires

  1. Forcer valeur nulle dans variable
    Par clickandgo dans le forum VBA Access
    Réponses: 16
    Dernier message: 15/05/2013, 13h04
  2. Réponses: 5
    Dernier message: 04/05/2010, 15h38
  3. Erreur de script : "style a la valeur null ou n'est pas un objet"
    Par Renzokuken dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 07/12/2009, 14h32
  4. Réponses: 16
    Dernier message: 18/01/2007, 17h46
  5. Réponses: 5
    Dernier message: 13/12/2006, 13h34

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