begin process at 2010 03 11 18:55:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Javascript

 > 

Archives

 > 

AU SECOURS !!!

 > 

Modifier le paramètre d'une fonction appelé par onclick dans un layer


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Modifier le paramètre d'une fonction appelé par onclick dans un layer

lundi 1 août 2005 à 13:22:45 | Modifier le paramètre d'une fonction appelé par onclick dans un layer

jfmaze

J'ai un layer dont le cellules peuvent évoluer en valeur et aussi sur le paramètre de la fonction qui est appelée.
- lors de la création du layer le onclick fonctionne bien
- lorsque que je modifie les valeurs des cellules, il n'y a pas de problème, mais lorsque je modifie l'attribut onclick pour changer la valeur du paramètre à passer à la fonction (recup), alors les cellules ne click plus:

Voici un petit exemple de mon problème:

<html>

<head>

<style>

#csscontrole { HEIGHT: 105px; LEFT: 200px; BORDER: #000000 thin solid; POSITION: absolute; TOP: 20px; VISIBILITY: hidden; WIDTH: 20px; Z-INDEX: 1;}

</style>

<script language="JavaScript">

oTop=16;

oLeft=30;

var controle = new Controle();

function Controle() {

//alert("toto");

}

Controle.calculer = function() {

// fabrication du controle

html = "<DIV id=csscontrole style=\"HEIGHT: 1px; LEFT: 120px; TOP: 100px; WIDTH: 100px; VISIBILITY: hidden; \">";

html += "<table id='tidcontrole' cellspacing='0' cellpadding='0' border='0' width=60 valign='top'><tbody>";

html += "<tr><td";

html += " onclick='recup(\"A\");' align='center' style='cursor: hand;'> A </td>";

html += "<tr><td";

html += " onclick='recup(\"B\");' align='center' style='cursor: hand;'> B </td>";

html += "</td></tr>";

html += "<tr><td";

html += " onclick='recup(\"C\");' align='center' style='cursor: hand;'> C </td>";

html += "<tr><td";

html += " onclick='recup(\"D\");' align='center' style='cursor: hand;'> D </td>";

html += "</td></tr>";

html += "<tr><td width='100'>";

html += "</td></tr>";

html += "</tbody></table></div>";

document.write(html);

document.all.csscontrole.style.visibility='hidden';

}

Controle.maj = function() {

// racine est le noeud TBODY dont les lignes du tableau sont les childNodes

var racine = document.getElementById("tidcontrole").lastChild;

var iligne = 0;

var ligne = racine.childNodes[iligne];

var cell = ligne.firstChild;

// modification des cellules

cell = ligne.childNodes[0];

var ch_var_long = "recup(\"E\");";

cell.firstChild.nodeValue = "E";

//alert(cell.attributes["onclick"].nodeValue);

cell.removeAttribute("onclick");

//cell.attributes["onclick"].nodeValue = ch_var_long;

//cell.setAttribute("onClick", ch_var_long);

cell.onclick = ch_var_long;

//alert(cell.attributes["onclick"].nodeValue);

var iligne = 1;

var ligne = racine.childNodes[iligne];

var cell = ligne.firstChild;

cell = ligne.childNodes[0];

var ch_var_long = "recup(\"F\");";

cell.firstChild.nodeValue = "F";

//alert(cell.attributes["onclick"].nodeValue);

cell.removeAttribute("onclick");

//cell.attributes["onclick"].nodeValue = ch_var_long;

//cell.setAttribute("onClick", ch_var_long);

cell.onclick = ch_var_long;

//alert(cell.attributes["onclick"].nodeValue);

var iligne = 2;

var ligne = racine.childNodes[iligne];

var cell = ligne.firstChild;

cell = ligne.childNodes[0];

var ch_var_long = "recup(\"G\");";

cell.firstChild.nodeValue = "G";

//alert(cell.attributes["onclick"].nodeValue);

cell.removeAttribute("onclick");

//cell.attributes["onclick"].nodeValue = ch_var_long;

//cell.setAttribute("onClick", ch_var_long);

cell.onclick = ch_var_long;

//alert(cell.attributes["onclick"].nodeValue);

var iligne = 3;

var ligne = racine.childNodes[iligne];

var cell = ligne.firstChild;

cell = ligne.childNodes[0];

var ch_var_long = "recup(\"H\");";

cell.firstChild.nodeValue = "H";

//alert(cell.attributes["onclick"].nodeValue);

cell.removeAttribute("onclick");

//cell.attributes["onclick"].nodeValue = ch_var_long;

//cell.setAttribute("onClick", ch_var_long);

cell.onclick = ch_var_long;

//alert(cell.attributes["onclick"].nodeValue);

}

function valid(nTop,nLeft,nHaut,nLarg)

{

//alert(document.all.controle.style.visibility);

var nTop=eval(nTop + nHaut + oTop + document.all.tdcontrole.offsetTop);

var nLeft=eval(nLeft + oLeft + document.all.tdcontrole.offsetLeft - document.all.tdcontrole.offsetWidth + nLarg);

document.all.csscontrole.style.pixelTop=nTop;

document.all.csscontrole.style.pixelLeft=nLeft;

document.all.csscontrole.style.visibility='visible';

}

function recup(MaValeur)

{

document.form1.idcontrole.value=MaValeur;

Controle.maj();

document.all.csscontrole.style.visibility='hidden';

}

</script>

</head>

<body>

<script language="JavaScript">

Controle.calculer();</script>

<table width="250" class="table1">

<form method="POST" name="form1" action="/Asp/test/Test.asp">

<tr><td width="50%">Ouvir le contrôle</td>

<td width="50%" id=tdcontrole>

<INPUT type="text" name="idcontrole" id="idcontrole" class="zone" size="10" border="0"><A OnClick="javascript:valid(this.offsetTop,this.offsetLeft,this.offsetHeight,this.offsetWidth);"><IMG src="/_gfi_copy/img/BoutonOuvrir.gif" border="0" width="16"></a>

</td></tr></form></table>

</body>

</html>


Merci pour votre aide

lundi 1 août 2005 à 20:43:41 | Re : Modifier le paramètre d'une fonction appelé par onclick dans un layer

GhislainLavoie

Salut!

Je te propose d'utiliser l'évenement pour récuperer la valeur de la cellule.

Exemple :

<html>
<head>
<style>
#csscontrole { HEIGHT: 105px; LEFT: 200px; BORDER: #000000 thin solid; POSITION: absolute; TOP: 20px; VISIBILITY: hidden; WIDTH: 20px; Z-INDEX: 1;}
</style>

<script language="JavaScript">
oTop=16;
oLeft=30;

var controle = new Controle();

function Controle() {

//alert("toto");

}

Controle.calculer = function() {

// fabrication du controle

html = "<DIV id=csscontrole style=\"HEIGHT: 1px; LEFT: 120px; TOP: 100px; WIDTH: 100px; VISIBILITY: hidden; \">";
html += "<table id='tidcontrole' cellspacing='0' cellpadding='0' border='0' width=60 valign='top'><tbody>";
html += "<tr><td";
html += " onclick='recup(event);' align='center' style='cursor: hand;'> A </td>";
html += "<tr><td";
html += " onclick='recup(event);' align='center' style='cursor: hand;'> B </td>";
html += "</td></tr>";
html += "<tr><td";
html += " onclick='recup(event);' align='center' style='cursor: hand;'> C </td>";
html += "<tr><td";
html += " onclick='recup(event);' align='center' style='cursor: hand;'> D </td>";
html += "</td></tr>";
html += "<tr><td width='100'>";
html += "</td></tr>";
html += "</tbody></table></div>";

document.write(html);

document.all.csscontrole.style.visibility='hidden';

}

Controle.maj = function() {

// racine est le noeud TBODY dont les lignes du tableau sont les childNodes

var racine = document.getElementById("tidcontrole").lastChild;

// modification des cellules
var iligne = 0;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell.firstChild.nodeValue = "E";
cell.onclick = recup;

var iligne = 1;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell.nodeValue = "F";
cell.onclick = recup;

var iligne = 2;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell.nodeValue = "G";
cell.onclick = recup;

var iligne = 3;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell.firstChild.nodeValue = "H";
cell.onclick = recup;

}

function valid(nTop,nLeft,nHaut,nLarg)

{

//alert(document.all.controle.style.visibility);

var nTop=eval(nTop + nHaut + oTop + document.all.tdcontrole.offsetTop);

var nLeft=eval(nLeft + oLeft + document.all.tdcontrole.offsetLeft - document.all.tdcontrole.offsetWidth + nLarg);

document.all.csscontrole.style.pixelTop=nTop;

document.all.csscontrole.style.pixelLeft=nLeft;

document.all.csscontrole.style.visibility='visible';

}

function recup(ev)
{
MaCellule =ev&& ev.target?ev.target:event.srcElement;
MaValeur = MaCellule.firstChild.nodeValue;
document.form1.idcontrole.value=MaValeur;

Controle.maj();

document.all.csscontrole.style.visibility='hidden';

}

</script>

</head>

<body>

<script language="JavaScript">

Controle.calculer();</script>

<table width="250" class="table1">

<form method="POST" name="form1" action="/Asp/test/Test.asp">

<tr><td width="50%">Ouvir le contrôle</td>

<td width="50%" id=tdcontrole>

<INPUT type="text" name="idcontrole" id="idcontrole" class="zone" size="10" border="0"><A OnClick="javascript:valid(this.offsetTop,this.offsetLeft,this.offsetHeight,this.offsetWidth);"><IMG src="/_gfi_copy/img/BoutonOuvrir.gif" border="0" width="16"></a>

</td></tr></form></table>

</body>

</html>

A+, Ghislain

mardi 2 août 2005 à 10:20:47 | Re : Modifier le paramètre d'une fonction appelé par onclick dans un layer

jfmaze

Bonjour et merci de ta réponse.
Je ne comprends pas bien le fonctionnement de ta solution. Je n'ai jamais utilisé event et target; je vais regarder dans les doc. Est-ce que celà peut me permettre de récupérer dans la fonction récup une valeur qui serait différente de celle qui est affichée dans le TD, et dont le calcul (fait dans la fonction maj) fait qu'il se peut qu'il n'y ait pas de relation.
Effectivement dans le script de test j'ai repris des valeurs identiques, mais dans mon appli elles sont toujours différentes, et je pensais pouvoir éviter de refaire le calcul lors de la récupération de la valeur clickée.
J'avais aussi une autre solution qui était de gérer un tableau caché des valeurs avec le même indice que le tableau affiché?
Qu'en penses-tu.
Je ne suis pas sûr d'avoir été très clair

A+,
Jean-François

mardi 2 août 2005 à 16:10:16 | Re : Modifier le paramètre d'une fonction appelé par onclick dans un layer

GhislainLavoie

Salut!

Avec un setAttribute et getAttribute, tu devrais trouver ton compte.

A+, Ghislain

<html>
<head>
<style>
#
csscontrole { HEIGHT: 105px; LEFT: 200px; BORDER: #000000 thin solid; POSITION: absolute; TOP: 20px; VISIBILITY: hidden; WIDTH: 20px; Z-INDEX: 1;}
</style>

<script language="JavaScript">
oTop
=16;
oLeft
=30;

var controle = new Controle();

function Controle() {

//alert("toto");

}

Controle
.calculer = function() {

// fabrication du controle

html
= "<DIV id=csscontrole style=\"HEIGHT: 1px; LEFT: 120px; TOP: 100px; WIDTH: 100px; VISIBILITY: hidden; \">";
html
+= "<table id='tidcontrole' cellspacing='0' cellpadding='0' border='0' width=60 valign='top'><tbody>";
html
+= "<tr><td";
html
+= " onclick='recup(event);' align='center' style='cursor: hand;' value='AAA'> A </td>";
html
+= "<tr><td";
html
+= " onclick='recup(event);' align='center' style='cursor: hand;' value='BBB'> B </td>";
html
+= "</td></tr>";
html
+= "<tr><td";
html
+= " onclick='recup(event);' align='center' style='cursor: hand;' value='CCC'> C </td>";
html
+= "<tr><td";
html
+= " onclick='recup(event);' align='center' style='cursor: hand;' value='DDD'> D </td>";
html
+= "</td></tr>";
html
+= "<tr><td width='100'>";
html
+= "</td></tr>";
html
+= "</tbody></table></div>";

document
.write(html);

document
.all.csscontrole.style.visibility='hidden';

}

Controle
.maj = function() {

// racine est le noeud TBODY dont les lignes du tableau sont les childNodes

var racine = document.getElementById("tidcontrole").lastChild;

// modification des cellules
var iligne = 0;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell
.setAttribute("value","EEE");
cell
.firstChild.nodeValue = "E";
cell
.onclick = recup;

var iligne = 1;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell
.setAttribute("value","FFF");
cell
.firstChild.nodeValue = "F";
cell
.onclick = recup;

var iligne = 2;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell
.setAttribute("value","GGG");
cell
.firstChild.nodeValue = "G";
cell
.onclick = recup;

var iligne = 3;
var ligne = racine.childNodes[iligne];
var cell = ligne.firstChild;
cell
.setAttribute("value","HHH");
cell
.firstChild.nodeValue = "H";
cell
.onclick = recup;

}

function valid(nTop,nLeft,nHaut,nLarg)

{

//alert(document.all.controle.style.visibility);

var nTop=eval(nTop + nHaut + oTop + document.all.tdcontrole.offsetTop);

var nLeft=eval(nLeft + oLeft + document.all.tdcontrole.offsetLeft - document.all.tdcontrole.offsetWidth + nLarg);

document
.all.csscontrole.style.pixelTop=nTop;

document
.all.csscontrole.style.pixelLeft=nLeft;

document
.all.csscontrole.style.visibility='visible';

}

function recup(ev)
{
MaCellule
=ev&& ev.target?ev.target:event.srcElement;
alert
(MaCellule.getAttribute("value"));
MaValeur
= MaCellule.firstChild.nodeValue;
document
.form1.idcontrole.value=MaValeur;

Controle
.maj();

document
.all.csscontrole.style.visibility='hidden';

}

</script>

</head>

<body>

<script language="JavaScript">

Controle
.calculer();</script>

<table width="250" class="table1">

<form method=
"POST" name="form1" action="/Asp/test/Test.asp">

<tr><td width="50%">Ouvir le contrôle</td>

<td width="50%" id=tdcontrole>

<INPUT type=
"text" name="idcontrole" id="idcontrole" class="zone" size="10" border="0"><A OnClick="javascript:valid(this.offsetTop,this.offsetLeft,this.offsetHeight,this.offsetWidth);"><IMG src="/_gfi_copy/img/BoutonOuvrir.gif" border="0" width="16"></a>

</td></tr></form></table>

</body>

</html>


mardi 2 août 2005 à 16:39:06 | Re : Modifier le paramètre d'une fonction appelé par onclick dans un layer

jfmaze

Salut Ghislain,
C'est exactement çà que je cherchais.
Je te remercie beaucoup
A+


Cette discussion est classée dans : long, html, var, onclick, cell


Répondre à ce message

Sujets en rapport avec ce message

[html]Onclick + banière de pub [ par captainfalko ] Bonjour, J'ai une baniere de pub (MisterBot)que je souhaite associé a un évenement Onclick pour mes html. Je voudrais enfait, lors du clic sur la ban editeur html pb de balise ki apparait plusieur fois [ par sticky97 ] salut,g fais un editeur html en wysiwyg... g rajouter du javascript pour faire lebalise .... et je voudrai ke le prog evite de mettredeux fois la même redimensionner une page sur le onclick [ par niko14 ] Hello tout le monde!Voila en fait mon probleme!!J'enregistre un document word sous forme de page html!Apres je ressors tout ca en cliquant sur un lien Javascript et Bouton HTML [ par Slyders ] Bonjour,J'ai créé un bouton HTML qui prend comme valeur un chiffre.J'aimerai que sur mon onclick de se bouton je puisse récupérer se chiffre en tant q Script mot de passe sur la page index [ par webmcmaster ] Bonjour,J'utilise actuellement le script ci-dessous qui à pour vocation de filtrer certaines pages html via un code utilisateur et un mode de passe. T suppression ligne tableau [ par touriste80 ] BonjourJ'ai un ptit souci!! dans une colonne d'un tableau j'ai supprimé pour supprimer la ligne que je veux dans le tableau. chaque ligne rajoutée dan Je souhaiterais modifier la valeur de l'attribut class sur une balise TD avec Netscape 4.7 [ par zizou100679 ] Je souhaiterais modifier la valeur de l'attribut class sur une balise TD avec Netscape 4.7Voici mon code qui permet de definir un evenement onclick po changer une ligne de script?? [ par inthecorner ] Bonjour,je suis un newbie en javascript...ma Table ASP... if Diffusion Vidéos [ par goingup ] Bonjour à tous,Depuis quelque temps j'ai des difficultés pour diffuser mes vidéos depuis mon serveur ifrance...Effectivement, mes vidéos ne se lisent onclick : chargement autre html [ par Orange73 ] Bonjour,J'ai une page html (index.html) avec 1 bouton "enter". Dès son clic il ouvre une anim flash en fullscreen.Je souhaiterai également que lors du


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales