2016-06-28 2 views
0

J'utilise un entier annulable, et que de plus en plus par une de la manière suivante:L'augmentation de la valeur d'un nullable int (int?)

 item.addItem = function() { 
       //Check if item is already in the table on the right 
       if (viewModel.orderedItems.indexOf(this) < 0) { 

        if (isNaN(this.qty) || this.qty == 'undefined' || this.qty <= 0) { 
         //alert('is NaN1') 

         this.qty = 1; 
         //this.qty.value = 0; 
        } 
        //alert(this.qty.value); 
        viewModel.orderedItems.push(this); 
       } 
       else { 
        if (isNaN(this.qty) || this.qty == 'undefined' || this.qty <= 0) { 
         //alert('is NaN2') 
         this.qty + 1; 
         //this.qty.value = 0; 
        } 
        else { 
         viewModel.orderedItems.remove(this); 
         this.qty = this.qty + 1; 
         viewModel.orderedItems.push(this); 

        } 

       }` 

Maintenant, ce qté montre dans un inputfield, où vous peut le changer. Disons, j'ai écrit 15 comme quantité, et j'ai décidé de cliquer sur pour l'augmenter de un, il en résulte 151 (15 +1), au lieu de 16. Comment pourrais-je l'augmenter? par un, au lieu d'en ajouter un?

Nous vous remercions de votre participation.

+0

Vous pouvez lancer le type avec '+ this.qty + 1' ainsi, moins lisible si! – ftor

Répondre

3

Vous pouvez essayer de convertir cette chaîne numéro à l'aide parseInt et ajouter 1 à ce

parseInt(this.qty,10) + 1; 

où 10 est le radix

Vous pouvez également utiliser Number

A côté d'une utilisation largement construction utilise Unary_plus qui tente de le convertir en nombre.

Donc, dans votre cas, il sera

+this.qty + 1; 
+0

Cela fonctionne aussi, merci pour vos réponses rapides! – Paramone

+0

@ user2181397: Vous n'avez pas vraiment besoin de spécifier la base pour cet exemple, non? Il le détectera automatiquement en tant que décimal. – niandrei

+0

@niandrei Personnellement, je ne pense pas, mais j'ajoute la base juste pour être sûr. – Paramone

3

Remplacer:

this.qty + 1; 

Par

parseInt(this.qty) + 1; 

Mais vous avez un problème, car le type de valeur qté changer quelque chose.

+0

Parfait! (Peut accepter dans 10 minutes) – Paramone