2017-01-02 4 views
-1

Je veux faire une calculatrice de travail. Maintenant, je veux changer entre les opérateurs.Javascript/jQuery - si la valeur de l'entrée est

Disons que j'ai + et -. Ensuite, j'ai 2 numéros. L'opérateur est entre eux.

Si la valeur de l'opérateur est +, il doit calculer +. Si la valeur de l'opérateur est -, elle devrait calculer -.

J'ai essayé quelque chose comme ça, mais cela ne fonctionne pas, d'aide?

function Operator() { 
      if ($('#realOperator').val == ('+');){ 
        var a = parseInt($('input[name=a]').val()); 
        var b = parseInt($('input[name=b]').val()); 
        $('#total').val(a+b); 
      }else 
       $('#total').val(a-b); 
      } 
     } 

Informations

#realOperator est l'entrée avec l'opérateur

#total est l'entrée du résultat.

Merci et désolé si même la syntaxe est fausse .. Je suis nouveau!

+3

Semble faute de frappe lors de la publication. Il devrait être 'if ($ ('# realOperator'). Val() == ('+'))' pas 'if ($ ('# realOperator'). Val == ('+');)' – Satpal

+1

Aussi le point-virgule, et en utilisant a et b quand ils ne sont pas assignés, et le manquant {après l'autre. Il y a * beaucoup * d'erreurs ici, vous devez mettre un peu d'attention dans votre code. –

+0

mais si je fais si (.val() == ('+')), comment est-il censé savoir c'est pour #realOperator – Syno

Répondre

1

Voici la solution @Loris Vonlanthen

function Operator() { 
    var a = parseInt($('input[name=a]').val()); 
    var b = parseInt($('input[name=b]').val()); 
    if ($('#realOperator').val() == '+') { 
     $('#total').val(a + b); 
    } else 
     $('#total').val(a - b); 
} 
+0

Ohhhh @Satpal, merci pour la correction. – Shaybi

+0

Merci beaucoup pour votre code, mais l'entrée nommée #total est vide – Syno

+0

@Loris Vonlanthen vérifier ce [jsfiddle] (https://jsfiddle.net/vkwsm9dz/) – Shaybi

0

vous pouvez essayer ce code

function Operator() { 
var a = parseInt($('input[name=a]').val()); 
var b = parseInt($('input[name=b]').val()); 
if ($('#realOperator').val() == ('+')) { 
    var sum = a + b; 
    $('#total').val(sum); 
} else { 
    if (a > b) { 
     var minus = a - b; 
    } else { 
     var minus = b - a; 
    } 
    $('#total').val(minus); 
    } 
} 

si vous envoyez code ou entrez une valeur realOperator alors je vais vérifier à nouveau

+0

Merci pour votre aide – Syno

1

Vous devez supprimer le point-virgule dans votre condition, aussi, vous devez mettre a et b en dehors de l'instruction if puisque votre code '-' ne saura pas ce que sont a et b.

Vous avez eu aussi quelques erreurs de syntaxe, que je vous ai corrigé pour ci-dessous.

function Operator() { 
    var a = parseInt($('input[name=a]').val(), 10); 
    var b = parseInt($('input[name=b]').val(), 10); 
    if ($('#realOperator').val() == ('+')){ 
     $('#total').val(a+b); 
    } else { 
     $('#total').val(a-b); 
    } 
} 
+0

qu'est-ce que ", 10);" faire? – Syno

+0

Il spécifie la base à utiliser dans la fonction parseInt(). Vous pouvez en lire plus à ce sujet ici: http://www.w3schools.com/jsref/jsref_parseInt.asp. –

+0

Ok, merci – Syno

0

il y a un point-virgule (;) entre les deux if.

Aussi, vous n'avez pas besoin d'envelopper crochets autour de l'opérateur comme (« + »). Vous pouvez simplement écrire '+'.

Aussi, vous avez manqué « { » avec d'autre que vous avez fermé.

Vous devriez essayer ce code:

function Operator() { 
     if ($('#realOperator').val == '+'){ 
       var a = parseInt($('input[name=a]').val()); 
       var b = parseInt($('input[name=b]').val()); 
       $('#total').val(a+b); 
     }else{ 
      $('#total').val(a-b); 
     } 
    } 
+0

Merci pour votre aide – Syno

0
  1. Vous avez des erreurs de syntaxe dans votre code, par exemple ici: if ($('#realOperator').val == ('+');){. Le point-virgule est inutile.

  2. La méthode .val() vous obtiendrez la valeur d'entrée comme chaîne. Vous devez le convertir en numéro.

  3. Il est préférable de séparer votre logique de votre balisage. Donc, définissez votre fonction Operator comme une fonction pure qui prend deux nombres et un opérateur, et calculez le résultat.

function operator(a, b, operation) { 
 
    if (operation === '+') { 
 
    return a + b; 
 
    } 
 
    else if (operation === '-') { 
 
    return a - b; 
 
    } 
 
    
 
    // you can implement more operations like */% 
 
    
 
    throw new Error('Unhandled Operation'); 
 
} 
 

 
$(function() { 
 
    $('[data-role="operator"]').on('click', function() { 
 
    var operation = $(this).text(); 
 
    var a = $('#a').val() * 1; // make it number 
 
    var b = $('#b').val() * 1; // make it number 
 
    
 
    $('#total').val(operator(a, b, operation)); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 

 
<input id="a" type="text" /> 
 
<input id="b" type="text" /> 
 
<button data-role="operator">+</button> 
 
<button data-role="operator">-</button> 
 

 
<hr /> 
 
<input id="total" />

+0

Bonne réponse, mais je suis un débutant et j'aimerais utiliser des codes plus faciles à comprendre comme le code de @Shaybi – Syno