begin process at 2012 05 29 18:56:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

Framework

 > 

Prototype, Script.Aculo.us

 > 

Problème de connaissance en javascript


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

Problème de connaissance en javascript

vendredi 1 mai 2009 à 11:39:38 | Problème de connaissance en javascript

alexflex25

Bonjour à tous.
J'ai un petit problème avec une de mes fonctions.

OBJECTIF DE LA FONCTION:
Ajouter des valeurs à l'attribut "onclick" des mes balise HTML '<input type="button"/>'

Voici un premier exemple qui fonctionne mais qui est limité

(les lignes à analyser sont en rouge)

function liste_onclick_boutons(){
    //Liste des mes boutons <input/>
    var inputs = $$('input');
    //compteur de bouton <input type="button"/>
    var compteur = 0;
    
    //variable ajax0 pour le premier bouton
    var ajax0 = '';
    //variable action0 pour le premier bouton
    var action0 = '';
    //variable ajax1 pour le 2 bouton
    var ajax1 = '';
    //variable action1 pour le 2 bouton    
    var action1 = '';    
    
    //Pour chaque <input/> de ma page
    for(var i=0; i<inputs.length; i++){
        //si c'est un bouton <input type="button"/> et qu'il possede des attributs "ajax" et "action"
        //exemple: <input type="button" name="Valider" value="Valider" ajax="request" action="aff_valider" />'

        if(inputs[i].type == "button" && $(inputs[i]).getAttribute('ajax') != null && $(inputs[i]).getAttribute('action') != null){
            //suivant le numero de mon bouton
            switch(compteur){
                case 0:

                    //j'affecte la variable correpondante a mon bouton
                    ajax0 = $(inputs[i]).getAttribute('ajax');
                    action0 = $(inputs[i]).getAttribute('action');

                    //j'ajoute la valeur à la propriete onclick de mon bouton.
                    $(inputs[i]).onclick = function (){eval(gen_onclick(ajax0,action0));}                    
                break;
                case 1:

                    //j'affecte la variable correpondante a mon bouton
                    ajax1 = $(inputs[i]).getAttribute('ajax');
                    action1 = $(inputs[i]).getAttribute('action');

                    //j'ajoute la valeur à la propriete onclick de mon bouton.                    
                    $(inputs[i]).onclick = function (){eval(gen_onclick(ajax1,action1));}                
                break;

            }
            //j'incremente la valeur de mon compteur pour le bouton suivant
            compteur++;
        }
    }
}

l'idée finale est d'arriver à quelque chose comme ceci:

function liste_onclick_boutons(){
    var inputs = $$('input');
    var compteur = 0;   
   
    for(var i=0; i<inputs.length; i++){
        if(inputs[i].type == "button" && $(inputs[i]).getAttribute('ajax') != null && $(inputs[i]).getAttribute('action') != null){
            eval('ajax' + compteur) = $(inputs[i]).getAttribute('ajax');
            eval('action' + compteur) = $(inputs[i]).getAttribute('action');
            $(inputs[i]).onclick = function (){eval(gen_onclick(('ajax' + compteur),('action' + compteur)));}                   
            compteur++;
        }
    }
}

POURQUOI FAIRE CECI:
Si j'utilise ma fonction de la maniéré suivante tous mes boutons se retrouve avec les mêmes valeurs de "ajax" et "action" que le dernier bouton.

function liste_onclick_boutons(){
    var inputs = $$('input');
    var compteur = 0;   
    var ajax = '';
    var action = '';
    for(var i=0; i<inputs.length; i++){
        if(inputs[i].type == "button" && $(inputs[i]).getAttribute('ajax') != null && $(inputs[i]).getAttribute('action') != null){
            ajax = $(inputs[i]).getAttribute('ajax');
            action = $(inputs[i]).getAttribute('action');
            $(inputs[i]).onclick = function (){eval(gen_onclick(ajax,action));}                   
            compteur++;
        }
    }
}



Merci à tous de votre aide.
vendredi 1 mai 2009 à 14:34:04 | Re : Problème de connaissance en javascript

Arto_8000

Réponse acceptée !
Tu peux binder sur une fonction un contexte et des paramètres qui seront ajoutés automatique à son appel. Pour faire simple, la plus plupart du temps ce qui est utilisé est ceci (c'est tiré de la librairie prototype) :

Function.prototype.bind = function() {
    var __method = this, args = $A(arguments), object = args.shift();
    return function()
        return __method.apply(object, args.concat($A(arguments)));
    }
}

function $A(iterable) {
    if (!iterable) return [];
    if (iterable.toArray) {
        return iterable.toArray();
    } else {
        var results = [];
        for (var i = 0, length = iterable.length; i < length; i++)
            results.push(iterable[i]);
            return results;
    }
}

que tu utilises par la suite comme ceci :

$(inputs[i]).onclick = function (ajax, action){
    eval(gen_onclick(ajax,action));
}.bind(this, ajax, action)
lundi 4 mai 2009 à 18:37:43 | Re : Problème de connaissance en javascript

alexflex25

Merci beaucoup, je viens de comprendre énormément de choses.
Merci encore!


Cette discussion est classée dans : action, var, ajax, onclick, inputs


Répondre à ce message

Sujets en rapport avec ce message

question sur "action=OnClick" [ par michong ] salut a tousje debute alors je voudrais savoir si il été possible d'effectuer deux actions sur le clic d'un bouton ???exp : je voudrais imprimer puis changer une ligne de script?? [ par inthecorner ] Bonjour,je suis un newbie en javascript...ma Table ASP... if [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 Modifier le paramètre d'une fonction appelé par onclick dans un layer [ par 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 on Ajax - getelementsbytagname is not a function? [ par jnbdzjnbdz ] Bonjour, je travaille depuis un certain temps sur une application web faite avec ajax et PHP. Je viens de rencontrer un problème qui m'empêche d'avanc Changement de script dynamique de onclick sur html [ par cousinlol ] Bonsoir,J'ai fait un script qui me permet sur un formulaire sur un clic d'effectuer une alternance d'image et de traitement déclenché par onclick :[co probleme avec IE action onClick [ par 27 ] Salut,j'ai un probleme que je n'arrive pas a resoudre avec IE. J'ai un select comportant plusieurs option qui font appel au onClick. Sous firefox l'ap Double action pour un OnClick [ par lunnatick ] Bonjour, je voudrais créer un lien avec l'évènement OnClick qui effectue deux opérations, je par avec ceci: [code]Le lien[ Onclick sur le bouton d'une alert [ par SeNeO64 ] Bonjour,N'ayant rien pu trouver de convainquant sur le net, je me retourne vers ce forum.J'aimerais savoir s'il est possible d'effectuer une action pr Probleme sur onclick [ par eddie5150 ] Bonjour à tous,voila j'ai un probleme bizarre,lorsque je fait ceci :for(var i=0;i!=3;i++){    var td = tr.insertCell(-1);    td.onclick = function() {


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,406 sec (3)

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