[Javascript] Définir un attribut à l'aide d'une variable

Définir un attribut à l'aide d'une variable [Javascript] - HTML/CSS - Programmation

Marsh Posté le 05-07-2011 à 13:17:10    

Bonjour à tous,
 
Dans une fonction Javascript, j'aimerai pouvoir choisir directement quels attributs modifier à partir des paramètres de la fonction, sans effectuer toute une batterie de tests.
 
Exemple : (qui ne marche pas, c'est juste pour l'idée)
 
function change(id,attribut,valeur) {
document.getElementbyId(id).attribut = valeur;
}
 
change('id01' , 'value' , 'Bonjour');
change('id02' , 'checked' , true);
change('id03' , 'style.display' , 'none');
etc.
 
Je pourrai bien sûr passer par des test sur les paramètres, ou faire des fonctions dédiées, mais je voudrais vraiment alléger la structure en gardant des fonctions génériques.
Je suis 99% sûr qu'il est impossible de passer des variables en attributs, mais j'aimerais une confirmation... :jap:
 
Merci pour vos réponses...


Message édité par TontonDouceur le 05-07-2011 à 13:18:56
Reply

Marsh Posté le 05-07-2011 à 13:17:10   

Reply

Marsh Posté le 05-07-2011 à 14:00:03    

Un truc dans ce style ?

Code :
  1. var changeAttr = function (id, attr, val)
  2. {
  3.  if (arguments.length != 3) {
  4.   throw "Pas assez de parametres !";
  5.  }
  6.  var el = document.getElementById (id),
  7.   prevVal;
  8.  if (!el) {
  9.   throw "Element '" + id + "' pas trouvé !";
  10.  }
  11.  prevVal = el[attr];
  12.  el[attr] = val;
  13.  return prevVal;
  14. }


 
(la fonction te retourne l'ancienne valeur de l'attribut que tu veux modifier :o )


Message édité par SICKofitALL le 05-07-2011 à 14:00:38

---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-07-2011 à 14:05:28    

Par contre, pour des trucs du genre "style.display", ca reste faisable mais il faut creuser un peu plus (pourquoi pas un 4eme param ?)


---------------
We deserve everything that's coming...
Reply

Marsh Posté le 05-07-2011 à 16:30:47    

Super, merci !
 
Ca m'a tout l'air d'être ce que je cherche ! Et simple en plus ! :p
 
Je vais tâcher de tester ça, et de découvrir les limites...
 
Merci beaucoup ! :jap:

Reply

Marsh Posté le 07-07-2011 à 08:25:23    

et pourquoi tu veux faire ça ? tu veux recoder une librairie ?  
à ce prix là pourquoi ne pas avoir une fonction qui te retourne l'objet quand tu lui passe l'id, et après il est aussi simple de faire ça :  
 

Code :
  1. myfunc('id').style.display = 'block';


C'est même plus intelligent et c'est comme ça que fonctionnent la plupart des librairies via leur $.
 
Et pourquoi ne pas utiliser une librairie qui te ferait gagner un temps conséquent.


---------------
Blablaté par Harko
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed