Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1222 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  erreur javascript

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

erreur javascript

n°1888744
kazerson
Posté le 27-05-2009 à 21:24:46  profilanswer
 

[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
mood
Publicité
Posté le 27-05-2009 à 21:24:46  profilanswer
 

n°1888755
David Bori​ng
Posté le 27-05-2009 à 22:08:30  profilanswer
 

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 );'


n°1888778
SICKofitAL​L
misanthrope
Posté le 27-05-2009 à 23:56:48  profilanswer
 

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...
n°1888781
kazerson
Posté le 28-05-2009 à 00:15:35  profilanswer
 

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.

n°1888784
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 00:23:06  profilanswer
 

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...
n°1888785
kazerson
Posté le 28-05-2009 à 00:27:15  profilanswer
 

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

n°1888786
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 00:30:43  profilanswer
 

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


---------------
We deserve everything that's coming...
n°1888787
David Bori​ng
Posté le 28-05-2009 à 00:38:45  profilanswer
 

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

n°1888788
David Bori​ng
Posté le 28-05-2009 à 00:43:40  profilanswer
 

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

n°1888789
kazerson
Posté le 28-05-2009 à 00:47:28  profilanswer
 

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

mood
Publicité
Posté le 28-05-2009 à 00:47:28  profilanswer
 

n°1888790
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 00:48:41  profilanswer
 

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...
n°1888791
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 00:49:17  profilanswer
 

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...
n°1888792
kazerson
Posté le 28-05-2009 à 00:59:06  profilanswer
 

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--;
}

n°1888793
kazerson
Posté le 28-05-2009 à 01:00:32  profilanswer
 

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

n°1888794
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 01:05:18  profilanswer
 

l'event onClick a disparu ? :??:


---------------
We deserve everything that's coming...
n°1888795
kazerson
Posté le 28-05-2009 à 01:29:26  profilanswer
 

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"/>

n°1888796
kazerson
Posté le 28-05-2009 à 02:44:00  profilanswer
 

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
n°1888805
SICKofitAL​L
misanthrope
Posté le 28-05-2009 à 08:00:05  profilanswer
 

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...
n°1889779
kazerson
Posté le 30-05-2009 à 15:50:35  profilanswer
 

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é?

n°1889810
SICKofitAL​L
misanthrope
Posté le 30-05-2009 à 18:46:10  profilanswer
 

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...
n°1891881
kazerson
Posté le 06-06-2009 à 01:58:20  profilanswer
 

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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  erreur javascript

 

Sujets relatifs
[Javascript] Erreur incompréhensible [RESOLU]erreur javascript "objet attendu"
[Réglé][JavaScript] Erreur 'Object expected'Javascript:Pb de gestion d'erreur en javascript
Javascript : erreur un peu difficile à comprendre pour un débutantErreur "simple" Javascript sous IE
[RESOLU] Erreur dans galerie en JavaScript.Erreur javascript aléatoire
erreur execution javascript[javascript] erreur de parseInt étrange
Plus de sujets relatifs à : erreur javascript


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR