Intégration simple d'une fonction à onClick => erreur

[Résolu]
Signaler
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
-
Bonjour,

Je n'utilise généralement pas javascript, mais là j'en ai besoin. Je voudrais que lorsque je clique sur un lien, celui ci disparait pour laisser sa place à un tout petit formulaire.

Mon code me semble correct, mais je ne comprend pas pourquoi il m'affiche directement le formulaire (sans avoir cliquer sur le lien) suivi de );">lien

Voici mon code (intégrer à du php):

ma fonction en haut de page:

<script language="javascript">
 var ns4 = (document.layers)? true:false;         //NS 4
   var ie4 = (document.all)? true:false;         //IE 4
   var dom = (document.getElementById)? true:false;   //NS 6 ou IE 5

   function SetDiv(ID,Content) {
      if (dom) {
      document.getElementById(ID).innerHTML = Content;
         return;
      }
      if (ie4) {
          document.all[ID].innerHTML = Content;
         return;
      }
      if (ns4) {
          with (eval('document.'+ID+'.document')) {
             open();
             write(Content);
             close();
         }
         return;
      }
   }
</script>

Ensuite vu que je suis dans un tableau, je voudrais pouvoir effectuer cette opération plusieurs fois sur la meme page, mais quand je clique sur un lien qu'il change ce lien et non tous, je nomme donc mes div id_1, id_2, ... automatiquement grace à une boucle php:

        $n = "1";
        $content = "Nouveau nom: <form name=\"renommer\" action=\"admin.php3\" method=\"POST\">&nbsp;</form>";
       
        while ($file = $handle->read()) { // faites pas gaffe aux $file $handle ca a rien a voir
                if (($file != ".") && ($file != "..")) {
                                $id = "id_".$n;
                                 print "\n----
";
                                print "\n, &nbsp;
Renommer
</td>\";
                               print \"\n----
\";
                               $n++;
           }
        }

Merci d'avance,

FF

</td>

16 réponses

Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Il faut également mettre des quote autour de l'id et de la chaine test (SetDiv("id_1","test"))
Voilà un exemple qui marche :
http://kysicurl.free.fr/ <script language="javascript">
   var ns4 = document.layers;         //NS 4
   var ie4 = document.all;         //IE 4
   var dom = document.getElementById;   //NS 6 ou IE 5

   function SetDiv(ID,Content) {
      if (dom) {
         document.getElementById(ID).innerHTML = Content;
         return;
      }
      if (ie4) {
          document.all[ID].innerHTML = Content;
         return;
      }
      if (ns4) {
          with (eval('document.'+ID+'.document')) {
             open();
             write(Content);
             close();
         }
         return;
      }
   }
</script>

texte 1

Renommer
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Apparement il y a eu un pb lors du post, faut écrire :
<td>[javascript: SetDiv('id_2','<form></form>') Renommer]</td>
http://kysicurl.free.fr/
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Tu pourrais déclarer des:
var text1div1 = "[javascript: SetAllDiv('id_1','<form></form>') Renommer]";
var text1div2 = "[javascript:
SetAllDiv('id_2','<form></form>') Renommer]";
var text1div3 = "[javascript:
SetAllDiv('id_3','<form></form>') Renommer]";
var text1div4 = "[javascript:
SetAllDiv('id_4','<form></form>') Renommer]";
et rajouter:
function SetAllDiv(ID,Content) {
    SetDiv('id_1'text1div1 );
    SetDiv('id_2',text1div2 );
    SetDiv('id_3',text1div3 );
    SetDiv('id_4',text1div4);
    SetDiv(ID,Content);
}

http://kysicurl.free.fr/
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Re,
essaye ça :
http://kysicurl.free.fr/ <script language="javascript">
   var ns4 = document.layers;           //NS 4
   var ie4 = document.all;              //IE 4
   var dom = document.getElementById;   //NS 6 ou IE 5

   function setDiv(ID,Content) {
      if (dom) {
         document.getElementById(ID).innerHTML = Content;
         return;
      }
      if (ie4) {
          document.all[ID].innerHTML = Content;
         return;
      }
      if (ns4) {
          with (eval('document.'+ID+'.document')) {
             open();
             write(Content);
             close();
         }
         return;
      }
   }

function getContDiv1() {
    return "<form></form>";
}
function getContDiv2(id) {
    return("[javascript: setAllDiv('id_1') Renommer]

[javascript: setAllDiv('id_2') Renommer]
Messages postés
469
Date d'inscription
mercredi 9 janvier 2002
Statut
Membre
Dernière intervention
20 février 2017
6
Salut, ça aurait été bien d'avoir du html généré plutôt qu'un mixage php/javascript parce qu'en fait il y a quoi dans $content ....?
Si c'était possible d'avoir le html généré, alors peu être pourrions nous donner suite à ta demande.

[o-_-o]
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
36
Bonjour,
    zobibol++
    et

...onClick="SetDiv($id,$content);"...
        où est le div qui sera référencé par $id ?




<hr />



Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
merci pour vos réponses,
zobibol: $content est affiché dans mon code, et c est mon formulaire:

$content = "Nouveau nom: <form
name=\"renommer\" action=\"admin.php3\" method=\"POST\">&nbsp;</form>";

voilà le code source que j'obtiens en mettant afficher la source dans mon explorateur après exécution:

<tr>
<td>ma photo.jpg</td>

<td><span class="delete"><a href="admin.php3?suppr=y&f=ma photo.jpg">-- Supprimer --</a></span>&nbsp;</td>
<td><div id="id_2"onClick="SetDiv(id_2,Nouveau nom: <form name="renommer"action="admin.php3"method="POST"><input type="text"name="new_name"><input type="submit"Value="Renommer"></form>);"><a href="">Renommer</a><div></td>
<tr>

PS: je vous ai mis les couleurs que m'affiche mon éditeur, mais c'est bizarre car le contenu de content interfère avec le onClick... Regardez que le guillement du contenu de $content, ferme le onClick...

bultez: mon div contient le lien, regarde cette ligne:

print "\n, &nbsp;
SetDiv($id,$content);\\">Renommer
</td>\";

Merci,

FF
</td>
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

Salut
Apparement tu as trouvé toi même de problème, il faut donc ajouter des antislash (directement avec unr fonction php par exemple), on remplacer certains des double " par simple ', sinon les interpréteur html ne peuve pas différencier la fin de onClick

http://kysicurl.free.fr/
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
NON, c'est pas ca le problème !!!
ca m'énerve trop, meme si je change le contenu de content par test, ca ne marche pas.... dans le html ca donne:

...........onClick="SetDiv(id_1,test);".........

c'est tout a fait correct mais quand je clique sur le lien, ca ne change rien, pourtant la premiere apparence est bonne
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
ok merci beaucoup je teste ca tout de suite !
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Merci, ca marche super !!! J'ai pu l'adapter à mon code, c est parfait,

Le seul truc c'est que vu qu'il y a plusieurs liens, les uns sous les autres, ca le fait pas si je clique sur le premier, puis sur le deuxieme j'aurais 2 formulaires et vu que je suis assez maniac, je trouve que ca le fait pas trop, serait-ce possible de retablir le lien des autres div quand je clique sur un des liens renommer?

J'esssaie d'imaginer que de rajouter qqch dans la fonction générale qui rétablirait l'autre lien, le seul truc chaud, c'est qu'il faudrait rétablir les liens renommer et ainsi rétablir le SetDiv('id_4',....) par exemple si c etait l id no 4 et ca je vois vraiment pas de solution vu qu on recharge pas la page et que je peux pas passer par php...
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Fantastique !

J'ai réussi à adapter avec php pour qu il sache combien il y a d'id.

J'ai fait un test, mais là c'est encore bizarre, c'est peut etre encore un problème de guillemets.
J'ai les liens Renommer qui s'affichent correctement, mais quand je clique sur l'un d'entre eux, à la place de celui que j'ai cliqué, il n'y a plus rien, et tout les autres affichent: le formulaire')'>Renommer je ne comprend pas, regarde le code source html après exécution:

function SetAllDiv(ID,Content) {

SetDiv('id_1','[javascript: SetAllDiv(\'id_1\',\'\')\'>Renommer');
SetDiv('id_2','\')\'>Renommer]');
SetDiv('id_3','[javascript: SetAllDiv(\'id_3\',\'\')\'>Renommer');
SetDiv('id_4','\')\'>Renommer]');
SetDiv('id_5','\')\'>Renommer');
SetDiv(ID,Content);
}
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
Désolé, il y avait une autre erreur ailleurs qui s'affichaient, en fait là, il affiche correctement le formulaire pour le premier que je clique, mais si je clique sur un autre lien, il m'amène vers: javascript:  et c'est tout, rien derriere ! ....
Messages postés
332
Date d'inscription
mardi 12 juillet 2005
Statut
Membre
Dernière intervention
17 juillet 2010

bon encore le même pb de post, remplace :

[ setAllDiv('id_1') Renommer]

par

[javascript: setAllDiv('id_1') Renommer]

http://kysicurl.free.fr/
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
merci, ce script marche bien, mais juste encore un détail, le prob c'est qu'en appelant le formulaire comme ca,
je ne vais pas pouvoir rajouter un champ hidden, qui contiendrait une variable php (nom du fichier).
Messages postés
355
Date d'inscription
lundi 26 juillet 2004
Statut
Membre
Dernière intervention
26 juin 2012
1
c'est bon, j'ai pu rajouter le fichier hidden, en rajoutant à plusieurs fonction une variable à insérer, en l'occurence file.
Ca marche à merveille,

Je te remercie beaucoup pour ton aide,
c'est la premiere fois que je m'investit autant dans du JavaScript, j'ai plutot l'habitude de prendre 2 ou 3 petits scripts sympas,
mais comme ce que je devais faire etait trop précis, j'ai du essayé et ca m'a fait du bien :-p

Merci et a bientot,

FF