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

Résolu
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 7 juin 2007 à 18:21
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 - 10 juin 2007 à 00:14
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

cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
8 juin 2007 à 21:46
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
3
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
8 juin 2007 à 22:17
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/
3
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
8 juin 2007 à 23:17
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/
3
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
9 juin 2007 à 13:54
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]
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zobibol Messages postés 469 Date d'inscription mercredi 9 janvier 2002 Statut Membre Dernière intervention 20 février 2017 6
8 juin 2007 à 11:23
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]
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 31
8 juin 2007 à 12:28
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 />
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
8 juin 2007 à 16:59
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>
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
8 juin 2007 à 17:43
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/
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
8 juin 2007 à 21:20
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
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
8 juin 2007 à 22:39
ok merci beaucoup je teste ca tout de suite !
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
8 juin 2007 à 23:04
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...
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
9 juin 2007 à 00:07
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);
}
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
9 juin 2007 à 00:11
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 ! ....
0
cs_Kysic Messages postés 332 Date d'inscription mardi 12 juillet 2005 Statut Membre Dernière intervention 17 juillet 2010
9 juin 2007 à 13:56
bon encore le même pb de post, remplace :

[ setAllDiv('id_1') Renommer]

par

[javascript: setAllDiv('id_1') Renommer]

http://kysicurl.free.fr/
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
9 juin 2007 à 23:44
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).
0
zut69 Messages postés 355 Date d'inscription lundi 26 juillet 2004 Statut Membre Dernière intervention 26 juin 2012 1
10 juin 2007 à 00:14
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
0