2016-04-06 5 views
1

okey so habe ich das, ein bisschen sehen Sie es wie Sie eine Website haben Sie Punkte einlösen können, jetzt, wenn ich einlöse Ich möchte nicht, dass die angegebene Anzahl ist kleiner als 4 Punkte und dass die angegebene Zahl größer ist als Ihr Punktekonto.Javascript wenn Funktion nicht richtig funktioniert mit getElemenById

Nun, wenn ich auf die Schaltfläche klicken, wenn der Eingang 2 ist, werde ich 2 Alerts (Benachrichtigungen für die Prüfung ist)

Aber sobald ich auf die Schaltfläche klicken, wenn ich als meine Balance eine Nummer kleiner setzen, Ich bekomme auch 2 Warnungen, sagen Nummer = (zum Beispiel) 7 und balancehidden = 100. So verstehe ich nicht, warum ich diese Warnungen bekomme. weil sein kleiner als die Balance und größer als 4

auch dies ist das Feld der Waage gespeichert werden, wenn refreshBalance() aufgerufen:

<input type=hidden id="balancehidden" name="balancehide" 
         value=""/> 

Javascript:

<input type="text" id="number"><br> 
     <button type="button" class="btn btn-success" id="redeem">Redeem</button> 

    <body onload="refreshBalance()"> 

      <script type="text/javascript"> 

      document.getElementById('redeem').onclick = function() { 

      if(document.getElementById('number').value < 4 || document.getElementById('number').value > document.getElementById("balancehidden").value) 
      { 


      alert(document.getElementById("number").value); 
      alert(document.getElementById("balancehidden").value); 
      } 
      } 
      </script> 
+0

Plz erklären, warum downvote? im neuen sry – Nick

+0

Warum sind deine 'input'- und' button'-Tags außerhalb des Körpers? Diese sollten in deinem Körper sein. – litel

+0

Entschuldigung vergessen zu erwähnen, das ist ein Snipet in meiner PHP-Datei – Nick

Antwort

3

Du bist versuchen zu sehen, ob eine Zeichenfolge größer als eine andere Zeichenfolge ist, aber was Sie wirklich tun möchten, ist Zahlen zu vergleichen. Counterintuitiv, "4" > "100" === true während 4 > 100 === false. Ihre Werte in Zahlen umrechnen:

if(parseInt(document.getElementById('number').value) < 4 || parseInt(document.getElementById('number').value) > parseInt(document.getElementById("balancehidden").value)) 

Verwenden parseFloat statt parseInt wenn Sie erwarten, Dezimalstellen und der radix parameter bewusst sein.

+0

Danke für die Lösung! – Nick

2

Das Problem besteht darin, dass Sie versuchen, Zeichenfolgenwerte anstelle von Ganzzahlen zu vergleichen. Bitte überprüfen Sie diese jsfiddle mit Arbeitscode: https://jsfiddle.net/2kbcuhg9/

document.getElementById('redeem').onclick = function() { 
    var number = parseInt(document.getElementById('number').value); 
    var balance = parseInt(document.getElementById('balancehidden').value); 
    if(number < 4 || number > balance) { 
    alert(document.getElementById("number").value); 
    alert(document.getElementById("balancehidden").value); 
    } 
} 
+0

Danke für die Lösung! – Nick

Verwandte Themen