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 :

Variable qui ne passe pas du html au js


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut Variable qui ne passe pas du html au js
    Bonjour

    Voilà, j'essaie d'appeler une simple fonction (qui lance un alert avec le contenu de la variable passée en argument), et la variable que je veux passer ne passe pas, alors que les autres variables passent. Je vous montre:

    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
     
    <?php foreach ($config as $key => $value) { ?>
    <h3><a href='#'> <?php echo $key; ?><br/></a></h3>
    <div>
    <TABLE>
    <tr>
    <th>Variable de configuration</th>
    <th>Valeur</th>
    	<?php foreach ($value as $k => $v) { //$k = strval($k);?>
    	<tr>
    	<td><?php echo $k; ?></td>
    	<td>
    	<input type="button" value="Click me!" onclick="changeValue($k)" /></td>
    	</tr>
     
    	<?php } ?>
    	</TABLE>
    	</div>
    <?php } ?>
    Dans mon onclick, si je mets un string ou un integer à la place de $k, ça marche, si je déclare une variable et que je la place à la place de $k ça marche aussi, mais avec $k ça ne passe pas, hors la variable n'est pas vide, et elle est bien de type string (j'ai testé avec un gettype). De plus elle s'affiche dans le tableau, du coup je ne comprends pas pourquoi elle ne passe pas dans mon onclick... rien ne se passe quand je clique dessus.

    J'ai pensé que ça pouvait venir du fait que je suis dans un foreach mais vu qu'elle s'affiche dans le tableau, ya pas de raison, et puis j'ai déjà fait des liens de ce type dans des foreachs et ça fonctionnait...

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Mai 2010
    Messages
    345
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 345
    Points : 496
    Points
    496
    Par défaut
    Citation Envoyé par zoreol Voir le message
    Bonjour

    Voilà, j'essaie d'appeler une simple fonction (qui lance un alert avec le contenu de la variable passée en argument), et la variable que je veux passer ne passe pas, alors que les autres variables passent. Je vous montre:

    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
     
    <?php foreach ($config as $key => $value) { ?>
    <h3><a href='#'> <?php echo $key; ?><br/></a></h3>
    <div>
    <TABLE>
    <tr>
    <th>Variable de configuration</th>
    <th>Valeur</th>
    	<?php foreach ($value as $k => $v) { //$k = strval($k);?>
    	<tr>
    	<td><?php echo $k; ?></td>
    	<td>
    	<input type="button" value="Click me!" onclick="changeValue($k)" /></td>
    	</tr>
     
    	<?php } ?>
    	</TABLE>
    	</div>
    <?php } ?>
    Dans mon onclick, si je mets un string ou un integer à la place de $k, ça marche, si je déclare une variable et que je la place à la place de $k ça marche aussi, mais avec $k ça ne passe pas, hors la variable n'est pas vide, et elle est bien de type string (j'ai testé avec un gettype). De plus elle s'affiche dans le tableau, du coup je ne comprends pas pourquoi elle ne passe pas dans mon onclick... rien ne se passe quand je clique dessus.

    J'ai pensé que ça pouvait venir du fait que je suis dans un foreach mais vu qu'elle s'affiche dans le tableau, ya pas de raison, et puis j'ai déjà fait des liens de ce type dans des foreachs et ça fonctionnait...
    tu mettrais ta chaine $k entre '' ca eviterai que ça te pète une erreur JS à la gueule.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    en fait le vrai code c'est ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $html->link($v, '#', array('onclick'=>"changeValue($k); "));
    C'est du cakephp, j'ai traduit en html pour que ce soit compréhensible par tout le monde.

    En mettant une autre variable que $k ça marche, par exemple si je mets $truc = 3; et que je mets la variable $truc a la place de $k, ça passe, il n'y a que $k qui ne passe pas...

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 69
    Points : 67
    Points
    67
    Par défaut
    Je viens de trouver le problème, mais pas la solution, en fait j'ai remarqué en testant que seuls les variables avec integer passent, les variables contenant un string ne passent pas. Par contre si je masse directement un string en argument, sans passer par une variable, ça passe.

    Je montre la fonction js au cas ou:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    function changeValue(value)
    {
    	alert(value);
    }
    EDIT: Problème résolu, ça passait pas avec les doubles quote, mais avec les simples quote c'est passé, j'aurais du y penser plus tôt, merci de ton aide en tout cas tu m'as mis sur la piste

    PS: Je ne trouve pas le bouton "résolu" en bas à gauche du sujet, on m'avait envoyé un email une fois pour me dire mais j'avoue que je vois pas où il faut cliquer, je vais ecrire "résolu" dans le titre en attendant

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

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Citation Envoyé par zoreol Voir le message
    en fait le vrai code c'est ça:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $html->link($v, '#', array('onclick'=>"changeValue($k); "));

    C'est du cakephp, j'ai traduit en html pour que ce soit compréhensible par tout le monde.

    En mettant une autre variable que $k ça marche, par exemple si je mets $truc = 3; et que je mets la variable $truc a la place de $k, ça passe, il n'y a que $k qui ne passe pas...
    Je ne pense pas que ça vienne de $k ou de ton code tel que tu le présente.
    as-tu vérifié que tu utilisais $k partout dans ta boucle et pas $K
    Je n'aime pas les variable avec une seule lettre pour ça c'est vite fait de pas voir l'erreur.

    je te propose de tester
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $jsHandler='changeValue(' . $k . '); ';
    echo $jsHandler;
    echo $html->link($v, '#', array('onclick'=>$jsHandler));
    cela devrait t'afficher
    changeValue(3); avant ton lien si tu ne l'as pas c'est que ton $k n'est pas le bon
    soit tu as une erreur de casse $k <> $K
    soit dans ton code de ta boucle tu as détruit $k



    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
    17
    18
    19
    20
    <?php foreach ($config as $conf => $values) { ?>
    <h3><a href='#'> <?php echo $conf; ?> </a></h3><br/>
    <div>
      <table>
        <tr>
          <th>Variable de configuration</th>
          <th>Valeur</th>
        </tr>
        <?php foreach ($values as $key => $val) {
          //$key = strval($key);
        ?> <tr>
          <td> <?php echo $key; ?> </td>
          <td> <?php
            $jsHandler='changeValue(' . $k . '); return false;';
            echo $html->link($val, '#', array('onclick'=>$jsHandler));
          ?> </td>
        </tr> <?php } ?>
      </table>
    </div>
    <?php } ?>

    A+JYT

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

Discussions similaires

  1. [PHP 5.0] Variable POST qui ne passe pas.
    Par KIK83 dans le forum Langage
    Réponses: 1
    Dernier message: 14/06/2012, 07h04
  2. Réponses: 2
    Dernier message: 06/09/2007, 09h23
  3. [Système] variable qui ne passe pas !!!
    Par azorol dans le forum Langage
    Réponses: 21
    Dernier message: 20/02/2006, 10h53
  4. [Tableaux] variable qui ne passe pas
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 31/12/2005, 02h56

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