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 :

querySelector ne marche pas


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut querySelector ne marche pas
    bonsoir tous ,
    j'ai un formulaire avec un bouton associé à l'évènement onclick :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <button onclick="changeConges(document.formulaire);">OK</button>
    avec une fonction associée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function changeConges(formulaire)
    {
    	var mois=formulaire.mois.value;// récupérer les valeurs des champs Mois et Jour
    	var jour=formulaire.jour.value;
    	document.writeln('<pre>' + mois + jour + '</pre>');
    	// récupérer le noeud du jour ciblé
    	var noeud_cible=document.querySelector('tr#mars');
    	document.writeln(noeud_cible);
    }
    le soucis c'est que la fonction écrit : Null
    Ce qui signifie que l'élément recherché n'a pas été trouvé.
    Je ne comprend pas pourquoi ?

  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
    IE 8+ ?
    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 éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    non , google chrome

  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
    Chrome 4+ ?
    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 éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Chrome 4+ ?
    là je sais pas .
    cela a-t-il une importance ?
    Les autres fonctions (getElementsById() ....) ne renvoient rien non plus !

  6. #6
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    Citation Envoyé par exe2bin Voir le message
    Les autres fonctions (getElementsById() ....) ne renvoient rien non plus !
    peut être parce quelles n'existent pas.

  7. #7
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Désolé pour la faute d'orthographe
    le mieux c'est de voir le code , non ?
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    <!DOCTYPE HTML>
    <html>
    <head>
    <title>Recap</title>
    <style>
    #navbar {
    	background: rgb(25%,20%,75%);
    	height: 25px;
    	width: 100%;
    }
    span.verticalbar {
    	color: rgb(164,218,37);
    	margin-right: 0em;
    	margin-left: 0em;
    }
    .navlink {
    	margin-left: 0.25em;
    	margin-right: 0.25em;
    	color: white;
    	text-decoration: none;
    }
    .janvier {;}
    </style>
    <script>
    function changeConges(formulaire)
    {
    	var mois=formulaire.mois.value;// récupérer les valeurs des champs Mois et Jour
    	var jour=formulaire.jour.value;
    	document.writeln('<pre>' + mois + jour + '</pre>');
    	// récupérer le noeud du jour ciblé
    	var noeud_cible=document.querySelector('tr#mars');
    	document.writeln(noeud_cible);
    }
    </script>
    </head>
    <body>
    <?php
            if (file_exists('Calendrier2012.xml'))
            {
            $xml = simplexml_load_file('Calendrier2012.xml');
     
        }
            else
            {
            exit('Echec lors de l\'ouverture du fichier Calendrier2012.xml.');
            }
    ?>
    <h3 style="align:center">Calendrier</h3>
    <table border="1">
    	<tr align="center" style="font-weight:bolder;font-size:10pt;"><td/>
    		<td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td><td>9</td><td>10</td>
    		<td>11</td><td>12</td><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td><td>19</td><td>20</td>
    		<td>21</td><td>22</td><td>23</td><td>24</td><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td><td>31</td>
    	</tr>
    	<?php
                    $numero_mois=0;
                    foreach($xml->mois as $month)
                    {
                            echo '<tr id="'.$month.'"><td style="font-size:10pt">'.$month.'</td>';
                            $numero_jour=1;
                            foreach($xml->mois[$numero_mois]->j as $jour)
                            {
                                    switch($jour)
                                    {
                                            case 'RH' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:orange;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'CA' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#f080d0;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'RT' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#40f040;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'HP' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#80f0d0;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'JS' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#f04040;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'FR' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#f04040;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'FP' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#4080f0;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            case 'RR' :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#4080f0;font-size:10pt">'.$jour.'</td>';
                                                    break;
                                            default :
                                                    echo '<td id="'.$numero_jour.'" style="background-color:#f0f080;font-size:10pt">'.$jour.'</td>';
                                    }
                                    $numero_jour++;
                            }
                            $numero_mois++;
                            echo '</tr>';
                    }
            ?>
    </table>
    <div id="navbar">
    	<a class="navlink" href="">Congés Annuels</a><span class="verticalbar">|</span>
    	<a class="navlink" href="">RTT</a><span class="verticalbar">|</span>
    	<a class="navlink" href="">FP</a><span class="verticalbar">|</span>
    </div>
    <form name="formulaire">
    	CA<input type="radio" name="type" value="ca"/>
    	RH<input type="radio" name="type" value="rh"/>
    	RT<input type="radio" name="type" value="rt"/>
    	HP<input type="radio" name="type" value="hp"/>
    	JS<input type="radio" name="type" value="js"/>
    	FR<input type="radio" name="type" value="fr"/>
    	FP<input type="radio" name="type" value="fp"/>
    	RR<input type="radio" name="type" value="rr"/>
    	Otaf<input type="radio" name="type" value="otaf"/><br/>
    	Mois :<input type="text" name="mois" maxlength="10"/>
    	Jour :<input type="text" name="jour" maxlength="2"/>
    	Duree :<input type="text" name="duree"maxlength="2"/><br/>
    	<button onclick="changeConges(document.formulaire);">OK</button>
    </form>
    </body>
    </html>

  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 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
    Plusieurs regles de base que ton script ne semble pas respecter
    - un id doit etre unique sur la page
    - un id ne doit jamais etre uniquement numérique
    - un id ne soit jamais commencer par un numérique
    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 expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Citation Envoyé par exe2bin Voir le message
    Désolé pour la faute d'orthographe
    le mieux c'est de voir le code , non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <!DOCTYPE HTML>
    code un peu moche, mais on fera avec...
    As tu réfléchis un petit peu à l'incidence de document.writeln() sur ta page ?

    Quand la page se charge et que tu fais un document.wrile ou writeln, le texte sera inscrit comme si le HTML avait été généré avant.

    Donc si tu appelles document.writeln à l'intérieur d'une fonction après que ta page a été chargée, alors le dom sera entièrement détruit, d'où le fait que donc querySelector("tr#mars"), retournera null.

  10. #10
    Membre expérimenté

    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 183
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    Plusieurs regles de base que ton script ne semble pas respecter
    - un id doit etre unique sur la page
    - un id ne doit jamais etre uniquement numérique
    - un id ne soit jamais commencer par un numérique
    En fait d'après la reference HTML du W3C un id peut être composé de tous les caratères qu'on veut, sauf d'espaces \s, \n, \r, \t, etc...

  11. #11
    Membre éclairé
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Billets dans le blog
    3
    Par défaut
    Envoyer par : arnogues
    Donc si tu appelles document.writeln à l'intérieur d'une fonction après que ta page a été chargée, alors le dom sera entièrement détruit, d'où le fait que donc querySelector("tr#mars"), retournera null.
    Magnifique !!
    j'avoue ne pas y avoir penser une seconde .....
    Comme tu l'as deviné je débute en dev-web et les livres ne disent pas tout
    ou alors il faut trouver la bonne page .
    Merci à tous pour votre aide précieuse.

  12. #12
    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
    Citation Envoyé par exe2bin
    Comme tu l'as deviné je débute en dev-web et les livres ne disent pas tout
    developez.com si
    Comprendre document.write() en JavaScript
    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

  13. #13
    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
    En fait d'après la reference HTML du W3C un id peut être composé de tous les caratères qu'on veut, sauf d'espaces \s, \n, \r, \t, etc...
    Moi je veux bien ...
    Mais as tu seulement déjà essayé d'utiliser des id numériques, ça pose des soucis de conflits avec les nommages internes de IE...

    Je persiste donc à recommander pas uniquement de numérique ni commencer par du numérique ...
    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 !

  14. #14
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    il faut parfois être curieux
    Citation Envoyé par NoSmoking Voir le message
    - document.writeln
    - ton formulaire est soumis, la fonction étant appelée sur le onsubmit.

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

Discussions similaires

  1. 'SHOW TABLES' marche pas sous postgresql !?
    Par fet dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 13/05/2004, 09h28
  2. Maximiser fenêtre ne marche pas
    Par sandrinec dans le forum Composants VCL
    Réponses: 2
    Dernier message: 12/06/2003, 12h02
  3. Réponses: 9
    Dernier message: 07/05/2003, 12h57
  4. [GifDecoder] marche pas dans applet avec IE
    Par formentor dans le forum Applets
    Réponses: 2
    Dernier message: 06/05/2003, 10h43
  5. Sysdate qui marche pas ??
    Par StouffR dans le forum Langage SQL
    Réponses: 4
    Dernier message: 28/08/2002, 13h23

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