2010-03-03 5 views
1

Question rapide, j'essaie de transmettre une valeur à une variable, puis d'exécuter une fonction si la variable a été définie sur quelque chose de spécifique. Comment je fais ça?Comment tester une variable passée dans une fonction?

je l'exemple suivant où je veux attribuer le nom de la valeur à un champ de formulaire si le type de variable est réglé sur 1.

function test(name,type) { 
    if (type=1) { 
    document.myform.name.value = name; 
    } 
} 

et un lien dans le corps du html:

<a href="javascript:test('myname','1');">FILL IN MY NAME</a> 

J'ai aussi essayé ce qui suit sans succès:

function test(name,type) { 
    var checktype = type; 
    if (checktype = 1) { 
    document.myform.name.value = name; 
    } 
} 

Je suis assez sûr que quelque chose comme ça est poss Je ne sais pas ce que je fais de mal.

+0

merci à tout le monde pour les réponses. Je savais que ça devait être quelque chose de simple. J'ai également découvert par moi-même que si j'essayais de définir la valeur de la variable sur autre chose qu'un nombre, disons tapez == go, j'ai besoin de placer la valeur entre guillemets. – Choy

Répondre

3

Essayez ceci:

function test(name,type) { 
    var checktype = type; 
    if (checktype == 1) { 
    document.myform.name.value = name; 
    } 
} 

Vous avez été absent ==

+0

+1 ... 41 secondes plus vite ... –

+0

@Sani Huttunen: Merci :) – Sarfraz

2

Vous voulez utiliser ==, pas =. L'utilisation d'un seul symbole affecter la valeur de 1 à la variable checktype, plutôt que de tester pour l'égalité:

function test(name,type) { 
    if (type == 1) { 
    document.myform.name.value = name; 
    } 
} 
+0

@Yanksy oui, à moins que la valeur du type détermine ce que vous faites ensuite ... :-) – richsage

1

Javascript utilise == pour les contrôles de l'égalité.

1
function test(name,type) { 
    if (type === "1") { 
    document.myform.name.value = name; 
    } 
} 

Pas besoin d'utiliser une variable supplémentaire dans la fonction pour stocker la valeur. Utilisez également ===' instead of == `si vous connaissez le type de la variable.

Voir Strict equal

Renvoie true si les opérandes sont strictement égaux (voir ci-dessus) sans conversion de type .

+0

merci pour le conseil supplémentaire. – Choy

0
function test(name,type) { 
    if (type==1) { 
    document.myform.name.value = name; 
    } 
} 
1

Vous devez utiliser un comparison operator au lieu d'un assignment operator:

function test(name, type) { 
    if (type == 1) { 
    document.myform.name.value = name; 
    } 
} 

Si vous utilisez un opérateur d'affectation, l'expression entière est évaluée à la valeur attribuée. Cela signifie type = 1 évalue à 1 qui est égal à vrai et la condition de branchement est toujours remplie.

+0

merci pour l'explication supplémentaire. – Choy

2

Pour éviter cette erreur de type tentent de le faire ..

function test(name,type) { 
    if (1 == type) { 
    document.myform.name.value = name; 
    } 
} 

Dans ce cas, si vous tapez par erreur, 1 = le type, vous obtenez une erreur et vous localiser la bonne façon.

+0

Astuce intéressante, merci. – Choy

+0

Très vieux truc, venant des jours C, il existe un livre intitulé Writing Solid Code, qui ressemble beaucoup à ça. Personnellement je l'ai utilisé tout le temps, quand j'écris en C/C++ - (en C# ce n'est pas nécessaire, ils ne vous laissent pas faire cette erreur) – Aristos

2

Si la variable n'a pas été transmise à l'argument de la fonction, l'adresse de l'argument sera Null. Par conséquent, vous devez vérifier les adresses avec l'instruction if dans votre fonction.c'est-à-dire:

bool flag(int & value) 
{ 
    if (&value == NULL) { 
     return false; 
    } 
    else { 
     return true; 
    } 
} 
Questions connexes