Affecter un nom de variable en JavaScript

Affecter un nom de variable en JavaScript - HTML/CSS - Programmation

Marsh Posté le 23-04-2008 à 13:45:34    

Bonjour,
 
J'ai un petit problème en JavaScript, merci si vous pouviez m'aider.
 
var test = 'a';
var test_2 = 'b';
var x = test + '_2'; (marche pas)
 
J'aimerais que x soit égal à 'test_2' mais sans écrire la variable 'test_2' , je suis censé connaître juste le nom de la variable test à laquelle il faut que je rajoute '_2'.
 
comment faire ?


Message édité par Profil supprimé le 23-04-2008 à 13:47:31
Reply

Marsh Posté le 23-04-2008 à 13:45:34   

Reply

Marsh Posté le 23-04-2008 à 14:26:09    

avec eval par exemple

Reply

Marsh Posté le 23-04-2008 à 14:33:15    

amha, rares sont les cas où cela est vraiment nécessaire.
Généralement on essaye de faire ça quand on sait pas se servir d'un tableau.
 
D'ou ma question: pourquoi ne pas se servir d'un tableau?


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 23-04-2008 à 14:42:56    

Je ne vois pas trop comment je pourrais faire avec un tableau pour résumer j'ai un formulaire avec des balises input et à coté de chaque champ input il y a un champ span qui va reprendre le nom que j'ai mis sur la balise input avec en plus le suffixe "_status", tout ça pour afficher l'état de la validation du formulaire.


Message édité par Profil supprimé le 23-04-2008 à 14:45:02
Reply

Marsh Posté le 23-04-2008 à 14:49:23    

Oui mais je vois toujours pas ce que viennent faire les "noms" de variable la dedans???
 
Pourquoi as-tu besoin de créer une variable test et une test_2 plutôt que de les mettres toutes les deux dans un tableau test?


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 23-04-2008 à 15:13:40    

Je vais reprendre ma fonction exactement pour te montrer:
(J'ai mi eval et ca marche cette fois ci)
 
prenom = document.getElementById('prenom');
prenom_status = document.getElementById('prenom_status');
 
nom = document.getElementById('nom');
nom_status = document.getElementById('nom_status');
 
prenom.onkeyup = function() { checkStr(prenom); }
nom.onkeyup = function() { checkStr(nom); }
 
 
function checkStr(f) {
  if (f.value.length > 2 ) {
    setSuccess(eval(f.id + '_status'), 'ce champ est correct');
    return true;
  }
  else {
    setError(eval(f.id + '_status'), 'il y a une erreur');
    return false;
  }
}
 
(Après le set setSuccess ou le setError se chargent de renvoyer sur la balise span le résultat.)
 
A partir de là je ne vois pas comment je pourrais faire avec un tableau..


Message édité par Profil supprimé le 23-04-2008 à 15:16:22
Reply

Marsh Posté le 23-04-2008 à 15:27:24    

ouais bin c'est bien ce que je dis, c'est complètement con et dégueu :o
T'as pas besoin d'un tableau je suis d'accord! Mais tu n'as pas non plus besoin de variable [:spamafote]

Code :
  1. document.getElementById('nom').onchange = function() { checkStr(this); }
  2. document.getElementById('prenom').onchange = function() { checkStr(this); }
  3. function checkStr(f) {
  4.   if (f.value.length > 2 ) {
  5.     setSuccess(document.getElementById(f.id+'_status'), 'ce champ est correct');
  6.     return true;
  7.   }
  8.   else {
  9.     setError(document.getElementById(f.id+'_status'), 'il y a une erreur');
  10.     return false;
  11.   }
  12. }


Message édité par anapajari le 23-04-2008 à 15:27:42

---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 23-04-2008 à 16:14:47    

Parfait merci je viens de refaire mon code ca fonctionne et c'est plus simple désormais!
 
j'ai juste rajouté l'événement onkeyup pour que cela soit optimal lors de la saisie.
 

Code :
  1. document.getElementById('nom').onkeyup = function() { checkStr(this); }
  2. document.getElementById('prenom').onkeyup = function() { checkStr(this); }
  3. document.getElementById('nom').onchange = function() { checkStr(this); }
  4. document.getElementById('prenom').onchange = function() { checkStr(this); }


Message édité par Profil supprimé le 23-04-2008 à 16:16:24
Reply

Marsh Posté le 23-04-2008 à 16:30:46    

nan mais onkeyup c'est  pas une bonne idée non plus, et c'est loin d'être optimal [:dawa]
Le onchange est amplement suffisant, avec ton onkeyup si je tape mon nick le keyup va forcer 9 vérifications, sachant que les 2 premières m'afficheront "erreur" alors que je n'aurai pas fini de taper...
 
Au pire,  si tu tiens vraiment à garder ton onkeyup vire le onchange qui devient inutile


---------------
Software and cathedrals are much the same - first we build them, then we pray.
Reply

Marsh Posté le 23-04-2008 à 16:54:18    

Voilà je viens d'optimiser mon code il se réduit encore  :D  
 

Code :
  1. onEvent(prenom, checkStr);
  2. onEvent(nom, checkStr);
  3. function onEvent(f, x) {
  4.   f.onclick = function() { x(this);
  5.   if (f.tagName == 'INPUT' || f.tagName == 'TEXTAREA') {
  6.     f.onkeyup = function() { x(this); }
  7.     f.onblur = function() { x(this); }
  8.   }
  9. }


 
PS: je suis obligé d'utiliser tout ces événements si je veux avoir un formulaire optimal.
 
Ca devrait après ressembler au formulaire de ce site:
http://www.rememberthemilk.com/signup/


Message édité par Profil supprimé le 23-04-2008 à 17:28:15
Reply

Sujets relatifs:

Leave a Replay

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