IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Appel de fonction javascript dans innerHtml


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    dans mon 1er code cal est une variable locale de ScriptJS et donc cal n'existe pas dans la fonction MonCodeJS. J'ai donc déclaré VarCal, un tableau comme une variable globale :

    Dans l'exemple ci-dessous, j'ai créé (à ma sauce ) également calendar1 en m'inspirant légèrement de ton code (j'ai juste enlévé les paramètres).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    var VarCal=new Array();
     
    function calendar1(){
    this.year_scroll=false;
    this.time_comp=false;
    this.year_comp=false;
    this.popup=new Function("n","alert('Coucou '+n);");
    }
     
    function insert(i)
    {
     ScriptJS(i);
     
     var inputHTML="";
     inputHTML  = "<input type=text name=\"UMPlannedDate"+i+"\" size=\"10\" id=\"UMPlannedDate"+i+"\">";
     inputHTML += "<a href=\"javascript:MonCodeJS("+i+")\">";
     inputHTML += "<img src=\"/AHEM/scripts/calendar/img/cal.gif\" width=\"16\" height=\"16\" border=\"0\" alt=\"Click Here to Pick the date\">";
     inputHTML += "</a><br>";
     
     var tempo = "outputZone"+i;
     document.getElementById(tempo).innerHTML = inputHTML;
     
    }
     
    function ScriptJS(i)
    {
     var inst="";
     
     inst  = "var cal"+i+" = new calendar1();";
     inst += "cal"+i+".year_scroll = false;";
     inst += "cal"+i+".time_comp = false;";
     inst += "cal"+i+".year_comp = true;";
     inst += "return cal"+i+";";
     
     var Fct=new Function("",inst);
     VarCal[i] = Fct();
     
    }
     
    function MonCodeJS(numCal)
    {
     var inst="";
     VarCal[numCal].popup(numCal);
    }
    et le code HTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    <html>
    <head>
    <title></title>
     
    <script type="text/javascript" src="aaa.js">
    </script>
     
    </head>
     
    <body onload="insert(0);insert(1);">
     
    <div id="outputZone0">&nbsp;</div>
    <div id="outputZone1">&nbsp;</div>
     
     
    </body>
     
    </html>
    cela fonctionne sous IE et FF.

  2. #2
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Matthieu2000, il persiste une erreur mais ça doit plus être trop loin... l'erreur est "error calling the calendar : no target control specified"...

  3. #3
    Membre éclairé Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Par défaut
    Salut et merci à tous, je vais tester le tout...

    Dans l'exemple ci-dessous, j'ai créé (à ma sauce ) également calendar1 en m'inspirant légèrement de ton code (j'ai juste enlévé les paramètres).
    Je te propose ma source pour calendar1...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    // if two digit year input dates after this year considered 20 century.
    var NUM_CENTYEAR = 30;
    // is time input control required by default
    var BUL_TIMECOMPONENT = false;
    // is year input control required by default
    var BUL_YEARCOMPONENT = false;
    // are year scrolling buttons required by default
    var BUL_YEARSCROLL = true;
     
    var calendars = [];
    var RE_NUM = /^\-?\d+$/;
     
    function calendar1(obj_target) {
     
    	// assigning methods
    	this.gen_date = cal_gen_date1;
    	this.gen_time = cal_gen_time1;
    	this.gen_tsmp = cal_gen_tsmp1;
    	this.prs_date = cal_prs_date1;
    	this.prs_time = cal_prs_time1;
    	this.prs_tsmp = cal_prs_tsmp1;
    	this.popup    = cal_popup1;
     
    	// validate input parameters
    	if (!obj_target)
    		return cal_error("Error calling the calendar: no target control specified");
    	if (obj_target.value == null)
    		return cal_error("Error calling the calendar: parameter specified is not valid target control");
    	this.target = obj_target;
    	this.time_comp = BUL_TIMECOMPONENT;
    	this.year_comp = BUL_YEARCOMPONENT;	
    	this.year_scroll = BUL_YEARSCROLL;
     
    	// register in global collections
    	this.id = calendars.length;
    	calendars[this.id] = this;
    }
     
    function cal_popup1 (str_datetime) {
    	this.dt_current = this.prs_tsmp(str_datetime ? str_datetime : this.target.value);
    	if (!this.dt_current) return;
     
    	var obj_calwindow = window.open(
    		'calendar/calendar.htmlcalendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id,
    		'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+
    		',status=no,resizable=no,top=200,left=200,dependent=yes,alwaysRaised=yes'
    	);
    	obj_calwindow.opener = window;
    	obj_calwindow.focus();
    }
     
    // timestamp generating function
    function cal_gen_tsmp1 (dt_datetime) {
    	return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime));
    }
     
    // date generating function
    function cal_gen_date1 (dt_datetime) {
      alert(this.year_comp);
    	return (
    		(dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "-"
    		+ (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + 
    		(this.year_comp ? "-" : "") 
    		+ (this.year_comp ? dt_datetime.getFullYear() : "") 
    	);
    }
    // time generating function
    function cal_gen_time1 (dt_datetime) {
    	return (
    		(dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":"
    		+ (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":"
    		+ (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds())
    	);
    }
     
    // timestamp parsing function
    function cal_prs_tsmp1 (str_datetime) {
    	// if no parameter specified return current timestamp
    	if (!str_datetime)
    		return (new Date());
     
    	// if positive integer treat as milliseconds from epoch
    	if (RE_NUM.exec(str_datetime))
    		return new Date(str_datetime);
     
    	// else treat as date in string format
    	var arr_datetime = str_datetime.split(' ');
    	return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0]));
    }
     
    // date parsing function
    function cal_prs_date1 (str_date) {
     
    	var arr_date = str_date.split('-');
     
    	if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy.");
    	if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found.");
    	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers.");
    	if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found.");
    	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers.");
    	if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found.");
    	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers.");
     
    	var dt_date = new Date();
    	dt_date.setDate(1);
     
    	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12.");
    	dt_date.setMonth(arr_date[1]-1);
     
    	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
    	dt_date.setFullYear(arr_date[2]);
     
    	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
    	dt_date.setDate(arr_date[0]);
    	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+".");
     
    	return (dt_date)
    }
     
    // time parsing function
    function cal_prs_time1 (str_time, dt_date) {
     
    	if (!dt_date) return null;
    	var arr_time = String(str_time ? str_time : '').split(':');
     
    	if (!arr_time[0]) dt_date.setHours(0);
    	else if (RE_NUM.exec(arr_time[0]))
    		if (arr_time[0] < 24) dt_date.setHours(arr_time[0]);
    		else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23.");
    	else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers.");
     
    	if (!arr_time[1]) dt_date.setMinutes(0);
    	else if (RE_NUM.exec(arr_time[1]))
    		if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]);
    		else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59.");
    	else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers.");
     
    	if (!arr_time[2]) dt_date.setSeconds(0);
    	else if (RE_NUM.exec(arr_time[2]))
    		if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]);
    		else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59.");
    	else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers.");
     
    	dt_date.setMilliseconds(0);
    	return dt_date;
    }
     
    function cal_error (str_message) {
    	alert (str_message);
    	return null;
    }

  4. #4
    Membre Expert
    Inscrit en
    Septembre 2002
    Messages
    2 307
    Détails du profil
    Informations forums :
    Inscription : Septembre 2002
    Messages : 2 307
    Par défaut
    Le champ créé est
    UMPlannedDateX
    Le champ pour l'appel est
    UMDateOfAccomplishmentX
    .
    Est ce que ce dernier existe?

Discussions similaires

  1. appel de fonction javascript dans une contentpage
    Par pigeon11 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 16/06/2009, 14h44
  2. Réponses: 1
    Dernier message: 25/10/2007, 21h25
  3. appeler une fonction javascript dans le code html
    Par kawther dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/05/2007, 16h40
  4. [PHP-JS] appeler une fonction javascript dans un lien
    Par kawther dans le forum Langage
    Réponses: 2
    Dernier message: 25/04/2007, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo