2017-10-06 3 views
-4

J'essaie de définir x sur une certaine valeur en fonction de ce que l'utilisateur saisit y. L'utilisateur peut entrer une valeur y mais ma fonction n'imprime pas x. Quelqu'un a-t-il des idées? Je n'ai pas été capable de trouver quoi que ce soit.Obtention d'une valeur pour x en fonction de y

var y = 12; 
 
var x = paymentfrequency() 
 

 
function paymentfrequency() { 
 
    if (y = year) { 
 
    x = 1; 
 
    } 
 
    if (y = quarter) { 
 
    x = 4; 
 
    } 
 
    if (y = month) { 
 
    x = 12; 
 
    } 
 
    if (y = fortnight) { 
 
    x = 26; 
 
    } 
 
    if (y = week) { 
 
    x = 52; 
 
    } 
 
    return x = 0 
 
} 
 

 
document.getElementById("output").innerText = x;
<b>The text is: </b><span id="output"> </span>

+5

= définit une valeur .... – epascarello

+1

Avez-vous défini 'year',' quarter', 'month',' 'fortnight' et week' nulle part ailleurs? – Booligoosh

+1

pourquoi renvoyez-vous 'x = 0'? –

Répondre

0

Essayez ceci (en supposant année, trimestre, mois, deux semaines et la semaine ont été définies):

<!DOCTYPE html> 
<html> 
<body> 

<b>The text is: </b><span id="output"> </span> 

<script> 

var y = 12; 
    var x = paymentfrequency() 

    function paymentfrequency() { 
    var out; 
    if (y == year) { out = 1; 
    } if (y == quarter) {out = 4; 
    } if (y == month) {out = 12; 
    } if (y == fortnight) {out = 26; 
    } if (y == week) {out = 52; 
    } return(out); 
    } 

document.getElementById("output").innerText = x; 

</script> 
</body> 
</html> 
0

À tout le moins, vous devriez utiliser === au lieu de = dans les instructions if. === teste l'égalité et renvoie true ou false; = est l'opérateur d'affectation, ce qui signifie que y est défini sur year dans la première instruction if.

De même, la fonction renvoie x = 0, ce qui définit x à 0 indépendamment du code que vous avez exécuté avant lui. Renvoyez x à l'intérieur de chaque instruction if, de sorte que la dernière return ne soit pas toujours atteinte, ou définissez x comme 0 au début, puis renvoyez-la, peu importe à la fin. (Ceci suppose que vous voulez x à être mis à 0 si aucun des autres if déclarations sont vraies.)

Je recommande la fixation de ces deux erreurs, et si votre sortie est toujours affiche pas correctement, la création d'une nouvelle question. J'espère que cela t'aides.

0

Vous avez plusieurs problèmes = définit une valeur == compare une valeur, vaguement et === compare une valeur strictement (les types doivent être les mêmes). Il ya pleanty d'articles là-bas sur la différence entre == et ===.

Ensuite, vous revenez toujours x=0 ce qui n'a vraiment aucun sens. En cours ... chacune de vos instructions if est évaluée. Vous seriez mieux avec if.elseif..else déclarations ou mieux encore switch.

Enfin, vous feriez mieux de ne pas essayer de travailler avec une variable en dehors de votre fonction, mieux vaut la passer en paramètre.

mettre donc tout ce que vous obtenez

<!DOCTYPE html> 
<html> 
<body> 

<b>The text is: </b><span id="output"> </span> 

<script> 

var y = 12; 
    var x = paymentfrequency(y) 

    function paymentfrequency(input) { 
    var out; 
    //Assuming year, month, quater etc are global variables set else where 
    switch(input) 
    { 
     case year: 
      out = 1; 
      break; 
     case quarter: 
      out = 4; 
      break; 
     case month: 
      out = 12; 
      break; 
     case fortnight: 
      out = 26; 
      break; 
     case week: 
      out = 52; 
      break; 
     default: 
      out = 0; 
      break; 
    } 

    return(out); 
    } 

document.getElementById("output").innerText = x; 

</script> 
</body> 
</html>