erreur javascript

erreur javascript - HTML/CSS - Programmation

Marsh Posté le 27-05-2009 à 21:24:46    

[Résolu]
 
Bonjour,
mon problème est le suivant:
j'ai un formulaire php conçu grâce à des données venant de la bd par une boucle.
 
 
 

Code :
  1. while($row = mysql_fetch_array($res))
  2. {
  3.      $id = $row['id'];
  4.     echo "<input type='text' class='bkInputQty' maxlength='4' size='2'  value='$nbre'  name='qte_$id_pd' id='$id' onclick='javascript:plusmoins(".$id." );'/>";
  5. }


 
 
 
dans ma fonction javascript, je fais:
 

Code :
  1. function plusmoins(id)
  2. {
  3.   nom2 = document.getElementById(id);
  4.   alert(nom2.value);
  5. }


 
l'erreur retournée est:" nom2 is null"  
 
Please!!!!!!!!!!!!!!!


Message édité par kazerson le 28-05-2009 à 03:01:30
Reply

Marsh Posté le 27-05-2009 à 21:24:46   

Reply

Marsh Posté le 27-05-2009 à 22:08:30    

Cela serait mieux de voir ton html plutôt que le php. J'imagine que ta fonction est mal écrite en php, tu devrais employer du js.

Code :
  1. onclick='javascript:plusmoins(this.id );'


Reply

Marsh Posté le 27-05-2009 à 23:56:48    

Je suppose que $row['id'] est une chaine, donc dans ton code PHP qui génére le code JS, tu devrais je pense plutot faire :

Code :
  1. onclick='javascript:plusmoins (\"" . $id . "\" );'


 
sinon comme dit, un simple plusmoins (this) suffirait
et ta fonction plusmoins deviendrait :

Code :
  1. function plusmoins (el)
  2. {
  3.   alert (el.value);
  4.   return;
  5. }


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 00:15:35    

Je ne sais pas si je me suis bien fais comprendre. la valeur de $id est bien envoyer à la fonction js. $id est l'id du champ de type text.

Reply

Marsh Posté le 28-05-2009 à 00:23:06    

Oui mais si tu ne la mets pas entre guillements, le javascript la verra logiquement comme une variable... qui n'existe pas !


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 00:27:15    

Quand je fais:

Code :
  1. function go(id)
  2. {
  3.   alert(id)
  4. }


l'id s'affiche bien! Mais c'est la vaeur du champ d'id $id qui m'ainteresse
quand je dis

Code :
  1. function go(id)
  2. {
  3.   alert(document.getElementById(id).value)
  4. }


là, il ya problème

Reply

Marsh Posté le 28-05-2009 à 00:30:43    

Tu peux poster le code tel que généré par PHP ?


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 00:38:45    

Donne ton code généré pour voir.

Reply

Marsh Posté le 28-05-2009 à 00:43:40    

En fait, si tu mets id entre double quote dans le onclick, tu envoies un string, pas un object
 

Reply

Marsh Posté le 28-05-2009 à 00:47:28    

c'est quoi mon code généré stp? menu "affichage"=>"code source de la page"?

Reply

Marsh Posté le 28-05-2009 à 00:47:28   

Reply

Marsh Posté le 28-05-2009 à 00:48:41    

David Boring a écrit :

En fait, si tu mets id entre double quote dans le onclick, tu envoies un string, pas un object
 


Faut pas mélanger les deux possibilités : soit il passe un string pour pouvoir choper l'element plus loin dans sa fonction, et donc il a besoin des quotes, soit il passe this (le mot clé) et il a directement l'element. Mais les deux méthodes ne se mélangent pas.


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 00:49:17    

kazerson a écrit :

c'est quoi mon code généré stp? menu "affichage"=>"code source de la page"?


oui
 
la partie concernant ce soucis bien sur :)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 00:59:06    

Voila la function js générées
 
function plusmoins(type,id_pd)  
{
   nom2 = document.getElementById(id_pd);
   alert(nom2.value);
   if(type=='1')
   nom2.value++;
   else
   nom2.value--;
}

Reply

Marsh Posté le 28-05-2009 à 01:00:32    

Voila le code php généré
<input type='text' class='bkInputQty' maxlength='4' size='2' value='1' name='qte_5' id='5'/>      

Reply

Marsh Posté le 28-05-2009 à 01:05:18    

l'event onClick a disparu ? :??:


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 28-05-2009 à 01:29:26    

toutes mes excuse voila plutot ce que j'aurais du envoyé
c'est la partie php générer. j'utilise les <map>

Code :
  1. <map name="1">
  2.  <area href='javascript:plusmoins(1,5);' coords='0,0,20,10' shape='rect' /><area href='javascript:plusmoins(2,5);' coords='0,11,20,22' shape='rect'/>  </map>
  3.     <input type='text' class='bkInputQty' maxlength='4' size='2' value='1' name='qte_5' id='5'/>   
  4.    <img hspace="0" border="0" align="absbottom" usemap="#1" class="btnPlusMoins" src="images/plusmoins.gif"/>

Reply

Marsh Posté le 28-05-2009 à 02:44:00    

Cest résolu
le code js est le suivant:

Code :
  1. function plusmoins(type,id)
  2. {
  3.   if(type==1)
  4.   {
  5.    
  6.    var val = parseInt(document.forms['form_panier'].elements[id].value) + 1;
  7. document.forms['form_panier'].elements[id].value = val;
  8.   }
  9.   else
  10.   if(type==2)
  11.   {
  12.    var val = parseInt(document.forms['form_panier'].elements[id].value);
  13. if(val>0) val --;
  14. document.forms['form_panier'].elements[id].value = val;
  15.   }
  16.  
  17. }


 
 
Et le code php est le suivant:

Code :
  1. echo "<form name='form_panier' action='' method='post'>";
  2. $num_id = 0;
  3. $req=mysql_query("select * from table" );
  4. while($row = mysql_fetch_array($req))
  5. {
  6.   $nbre = $row['nbre'];
  7.   $id_pd= $row['id_pd'];
  8. echo "<map name='$num_id'>";
  9.      echo "<area href='javascript:plusmoins(1,".$num_id." );' coords='0,0,20,10' shape='rect' />";
  10.   echo "<area href='javascript:plusmoins(2,".$num_id." );' coords='0,11,20,22' shape='rect'/>";
  11.   echo "</map>";
  12.      echo "<input type='text' class='bkInputQty' maxlength='4' size='2' value='$nbre' name='qte_$id_pd' id='$num_id'/>";          echo "<img hspace='0' border='0' align='absbottom' usemap='#$num_id' class='btnPlusMoins' src='images/plusmoins.gif'/>";
  13. $num_id++;
  14. }
  15. echo "</form";


Message édité par kazerson le 28-05-2009 à 02:55:58
Reply

Marsh Posté le 28-05-2009 à 08:00:05    

Avais-tu au moins essayé de passer une chaine au lieu d'un nombre comme parametre à ta fonction JS ? :sarcastic:


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 30-05-2009 à 15:50:35    

Je ne l'avais pas fais. Je n'avais eu cette l'idée. Penses-tu que le problème ne se serait pas posé?

Reply

Marsh Posté le 30-05-2009 à 18:46:10    

Tu t'es compliqué la tache à mort, alors que les réponses à ta question étaient plus haut.
N'oublies pas que ce que tu généres en PHP c'est basiquement du texte, qui une fois sur le client sera "décodé" pour être éxecuté. Si du coté PHP une variable est bien identifiée, il n'en sera pas forcément de même du coté JS, d'ù l'interet de mettre des quillements afin de lui faire comprendre qu'il s'agit de texte et non pas d'une hypothétique variable.
 
Concernant ta fonction plusmoins, tu peux la simplifier :
 

Code :
  1. function plusmoins (type, id)
  2. {
  3.  var val = parseInt (document.forms['form_panier'].elements[id].value);
  4.  val += (type == 1 ? 1 : -1);
  5.  if (val < 0) val = 0;
  6.  document.forms['form_panier'].elements[id].value = val;
  7.  return true;
  8. }


[:_edit]
Au passage, document.forms['form_panier'].elements est un tableau, dans lequel tu accèdes aux données par un index *numérique*, c'est donc bien la preuve que c'est bien un entier qui est passé en paramètre en lieu et en place d'une chaine :)


Message édité par SICKofitALL le 30-05-2009 à 21:58:10

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 06-06-2009 à 01:58:20    

j'ai fais quelques jours sans passer par ici! Ta fonction JS est super éfficient! Mes respects SICKofitALL


Message édité par kazerson le 06-06-2009 à 01:58:47
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed