2013-11-02 3 views
0

Я создал функцию, которая должна отключить кнопку, если переменная не больше или равна другой. Эта функция запускается каждую секунду на setInterval(), и первая переменная для сравнения также увеличивается на единицу в setInterval(). Но функция (evitarNegs()) работает неправильно, и кнопка всегда отключена. Извините, что часть кода написана на испанском языке.Функция с if-else не работает должным образом

Javascript:

var GmB = {cantidad: 0, perSec: 1}; 

function Upgrade (pb, ps) { 
    this.precioBase = pb; 
    this.perSec = ps; 
    this.cantidad = 0; 
    this.precio = pb; 
} 

Upgrade.prototype.comprar = function() { 
    GmB.cantidad = GmB.cantidad - this.precio; 
    GmB.perSec = GmB.perSec + this.perSec; 
    this.cantidad++; 
    document.getElementById("gmb").innerHTML = GmB.cantidad; 
    this.precio = Math.ceil(this.precioBase*Math.pow(1.15, this.cantidad)); 
    evitarNegs(); 
}; 

function loop() { 
    GmB.cantidad = GmB.cantidad + GmB.perSec; 
    document.getElementById("gmb").innerHTML = GmB.cantidad; 
    evitarNegs(); 
} 

var upg = new Upgrade(10, 1); 
var boton1 = document.getElementById("boton1"); 
boton1.disabled = true; 
window.setInterval(loop, 1000); 

//Problematic function 
function evitarNegs() { 
    if (!(GmB >= upg.precio)) { 
     boton1.disabled = true; 
    }else { 
     boton1.disabled = false; 
    } 
} 

boton1.onclick = function() { 
    upg.comprar(); 
}; 

HTML:

<html> 
    <head> 
     <title>Gummy Bears</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width"> 

    </head> 
    <body> 
     <p id="gmb">0</p> 
     <button id="boton1" type="button">Upgrade 1</button> 
     <script src="main.js"></script> 
    </body> 
</html> 

ответ

3

Вы сравниваете GmB с upg.precio, но GmB - объект. Итак, вы хотите

function evitarNegs() { 
    if (!(GmB.cantidad >= upg.precio)) { 
     boton1.disabled = true; 
    } else { 
     boton1.disabled = false; 
    } 
} 

Однако, это может быть написано гораздо проще, так как

function evitarNegs() { 
    boton1.disabled = GmB.cantidad < upg.precio; 
} 

Fiddle: http://jsfiddle.net/4rRmp/

1

кажется, что вы сравниваете объект в целое число в GmB >= upg.precio. Вероятно, вам придется заменить его на GmB.cantidad >= upg.precio.

Смежные вопросы