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 :

Explication de fonction


Sujet :

JavaScript

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 38
    Points
    38
    Par défaut Explication de fonction
    Une fonction d'un code pour faire un menu arborescent (Tigramenu) que je ne comprends pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function item_init () {
    	var a_offset = [],
    		o_current_item = this.o_parent;
    	for (var i = this.n_depth; i > 1; i--) {
    		a_offset[i] = '<img src="' + this.o_root.a_tpl[o_current_item.is_last() ? 'icon_e' : 'icon_l'] + '" border="0" align="absbottom">';
    		o_current_item = o_current_item.o_parent;
    	}
    	return '<table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap>' + (this.n_depth ? a_offset.join('') + (this.a_children.length
    		? '<a href="javascript: trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')"><img src="' + this.get_icon(true) + '" border="0" align="absbottom" name="j_img' + this.o_root.n_id + '_' + this.n_id + '"></a>'
    		: '<img src="' + this.get_icon(true) + '" border="0" align="absbottom">') : '') 
    		+ '<a href="' + this.a_config[1] + '" target="' + this.o_root.a_tpl['target'] + '" onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')" ondblclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')" class="t' + this.o_root.n_id + 'i" id="i_txt' + this.o_root.n_id + '_' + this.n_id + '"><img src="' + this.get_icon() + '" border="0" align="absbottom" name="i_img' + this.o_root.n_id + '_' + this.n_id + '" class="t' + this.o_root.n_id + 'im">' + this.a_config[0] + '</a></td></tr></table>' + (this.a_children.length ? '<div id="i_div' + this.o_root.n_id + '_' + this.n_id + '" style="display:none"></div>' : '');
    }
    Quelqu'un pourrait m'expliquer en détail ce qu'elle fait?

    Merci d'avance.

  2. #2
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Contexte ?

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 38
    Points
    38
    Par défaut
    Je ne suis pas sûr de comprendre ta réponse laconique.
    Voici le code de la fonction javascript complète, avec en rouge celle que je comprend pas du tout.

    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
    function tree (a_items, a_template) {
    
    	this.a_tpl      = a_template;
    	this.a_config   = a_items;
    	this.o_root     = this;
    	this.a_index    = [];
    	this.o_selected = null;
    	this.n_depth    = -1;
    	
    	var o_icone = new Image(),
    		o_iconl = new Image();
    	o_icone.src = a_template['icon_e'];
    	o_iconl.src = a_template['icon_l'];
    	a_template['im_e'] = o_icone;
    	a_template['im_l'] = o_iconl;
    	for (var i = 0; i < 64; i++)
    		if (a_template['icon_' + i]) {
    			var o_icon = new Image();
    			a_template['im_' + i] = o_icon;
    			o_icon.src = a_template['icon_' + i];
    		}
    	
    	this.toggle = function (n_id) {	var o_item = this.a_index[n_id]; o_item.open(o_item.b_opened) };
    	this.select = function (n_id) { return this.a_index[n_id].select(); };
    	this.mout   = function (n_id) { this.a_index[n_id].upstatus(true) };
    	this.mover  = function (n_id) { this.a_index[n_id].upstatus() };
    
    	this.a_children = [];
    	for (var i = 0; i < a_items.length; i++)
    		new tree_item(this, i);
    
    	this.n_id = trees.length;
    	trees[this.n_id] = this;
    	
    	for (var i = 0; i < this.a_children.length; i++) {
    		document.write(this.a_children[i].init());
    		this.a_children[i].open();
    	}
    }
    function tree_item (o_parent, n_order) {
    
    	this.n_depth  = o_parent.n_depth + 1;
    	this.a_config = o_parent.a_config[n_order + (this.n_depth ? 2 : 0)];
    	if (!this.a_config) return;
    
    	this.o_root    = o_parent.o_root;
    	this.o_parent  = o_parent;
    	this.n_order   = n_order;
    	this.b_opened  = !this.n_depth;
    
    	this.n_id = this.o_root.a_index.length;
    	this.o_root.a_index[this.n_id] = this;
    	o_parent.a_children[n_order] = this;
    
    	this.a_children = [];
    	for (var i = 0; i < this.a_config.length - 2; i++)
    		new tree_item(this, i);
    
    	this.get_icon = item_get_icon;
    	this.open     = item_open;
    	this.select   = item_select;
    	this.init     = item_init;
    	this.upstatus = item_upstatus;
    	this.is_last  = function () { return this.n_order == this.o_parent.a_children.length - 1 };
    }
    
    function item_open (b_close) {
    	var o_idiv = get_element('i_div' + this.o_root.n_id + '_' + this.n_id);
    	if (!o_idiv) return;
    	
    	if (!o_idiv.innerHTML) {
    		var a_children = [];
    		for (var i = 0; i < this.a_children.length; i++)
    			a_children[i]= this.a_children[i].init();
    		o_idiv.innerHTML = a_children.join('');
    	}
    	o_idiv.style.display = (b_close ? 'none' : 'block');
    	
    	this.b_opened = !b_close;
    	var o_jicon = document.images['j_img' + this.o_root.n_id + '_' + this.n_id],
    		o_iicon = document.images['i_img' + this.o_root.n_id + '_' + this.n_id];
    	if (o_jicon) o_jicon.src = this.get_icon(true);
    	if (o_iicon) o_iicon.src = this.get_icon();
    	this.upstatus();
    }
    
    function item_select (b_deselect) {
    	if (!b_deselect) {
    		var o_olditem = this.o_root.o_selected;
    		this.o_root.o_selected = this;
    		if (o_olditem) o_olditem.select(true);
    	}
    	var o_iicon = document.images['i_img' + this.o_root.n_id + '_' + this.n_id];
    	if (o_iicon) o_iicon.src = this.get_icon();
    	get_element('i_txt' + this.o_root.n_id + '_' + this.n_id).style.fontWeight = b_deselect ? 'normal' : 'bold';
    	
    	this.upstatus();
    	return Boolean(this.a_config[1]);
    }
    
    function item_upstatus (b_clear) {
    	window.setTimeout('window.status="' + (b_clear ? '' : this.a_config[0] + (this.a_config[1] ? ' ('+ this.a_config[1] + ')' : '')) + '"', 10);
    }
    
    function item_init () {
    	var a_offset = [],
    		o_current_item = this.o_parent;
    	for (var i = this.n_depth; i > 1; i--) {
    		a_offset[i] = '<img src="' + this.o_root.a_tpl[o_current_item.is_last() ? 'icon_e' : 'icon_l'] + '" border="0" align="absbottom">';
    		o_current_item = o_current_item.o_parent;
    	}
    	return '<table cellpadding="0" cellspacing="0" border="0"><tr><td nowrap>' + (this.n_depth ? a_offset.join('') + (this.a_children.length
    		? '<a href="javascript: trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')"><img src="' + this.get_icon(true) + '" border="0" align="absbottom" name="j_img' + this.o_root.n_id + '_' + this.n_id + '"></a>'
    		: '<img src="' + this.get_icon(true) + '" border="0" align="absbottom">') : '') 
    		+ '<a href="' + this.a_config[1] + '" target="' + this.o_root.a_tpl['target'] + '" onclick="return trees[' + this.o_root.n_id + '].select(' + this.n_id + ')" ondblclick="trees[' + this.o_root.n_id + '].toggle(' + this.n_id + ')" onmouseover="trees[' + this.o_root.n_id + '].mover(' + this.n_id + ')" onmouseout="trees[' + this.o_root.n_id + '].mout(' + this.n_id + ')" class="t' + this.o_root.n_id + 'i" id="i_txt' + this.o_root.n_id + '_' + this.n_id + '"><img src="' + this.get_icon() + '" border="0" align="absbottom" name="i_img' + this.o_root.n_id + '_' + this.n_id + '" class="t' + this.o_root.n_id + 'im">' + this.a_config[0] + '</a></td></tr></table>' + (this.a_children.length ? '<div id="i_div' + this.o_root.n_id + '_' + this.n_id + '" style="display:none"></div>' : '');
    }
    
    function item_get_icon (b_junction) {
    	return this.o_root.a_tpl['icon_' + ((this.n_depth ? 0 : 32) + (this.a_children.length ? 16 : 0) + (this.a_children.length && this.b_opened ? 8 : 0) + (!b_junction && this.o_root.o_selected == this ? 4 : 0) + (b_junction ? 2 : 0) + (b_junction && this.is_last() ? 1 : 0))];
    }
    
    var trees = [];
    get_element = document.all ?
    	function (s_id) { return document.all[s_id] } :
    	function (s_id) { return document.getElementById(s_id) };

  4. #4
    Membre averti Avatar de danyboy85
    Homme Profil pro
    Développeur Java
    Inscrit en
    Décembre 2005
    Messages
    548
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Décembre 2005
    Messages : 548
    Points : 312
    Points
    312
    Par défaut
    Tu crois vraiment que quelqu'un va prendre la peine de déchiffrer ton code ?

    Non, essaye plutot d'expliquer ce que le script est censé faire et ce qu'il ne fais pas bien. On y verra plus clair et on pourra t'aider

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juillet 2006
    Messages
    72
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 72
    Points : 38
    Points
    38
    Par défaut
    C'est une fonction "clé en main" pour faire un menu arborescent en javascript donné par le site Tigra menu. Seulement j'aimerais comprendre ce que fait chaque fonction et celle que j'ai mis est particulièrement obscure pour moi. Donc je me demandais si quelqu'un pouvait me l'expliquer.

    Il n'y aucun bug.

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 22
    Points : 12
    Points
    12
    Par défaut
    moi je dirai que cette partie sert a afficher des images pour les elements de l'arborescence, tu n'aurai pas le resultat en image pour verifier lol

    sinon ca met un lien href avec des images donc on peut supposer que c'est pour cela apres tout le code... je pourrai pas t'expliquer en details lol il rappele mille fois l'objet pour lui attribuer des truks différents.

Discussions similaires

  1. Explication des fonctions Left() et Mid() et le Chr(13)
    Par Adilleroy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2010, 16h10
  2. explication fonctionnement fonction
    Par bergoliv dans le forum C++
    Réponses: 5
    Dernier message: 20/01/2009, 19h53
  3. Explication De fonction
    Par wiLBuzz dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 04/12/2008, 09h38
  4. [AIDE] Explication de fonctions
    Par penvernyo dans le forum Débuter
    Réponses: 2
    Dernier message: 29/05/2008, 11h28
  5. explication de fonction
    Par da991319 dans le forum ASP.NET
    Réponses: 4
    Dernier message: 11/04/2008, 19h49

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