2017-07-02 26 views
0

所以我试图做一个功能,把你所拥有的土豆给你一个农民作为回报。我用一个简单的函数做了它,但现在当我想添加一些东西时,我只是在复制粘贴相同的代码。所以我试图做一个完成这一切的功能。你能解释为什么这不起作用吗?

我不想要jQuery的答案。我真的不明白那是如何工作的。

这是调用该函数的HTML:

<button onClick="buy(autoFarmer, defaultAutoFarmerPrice, potatoes)" id="buyautofarmer">Buy Auto Farmer</button>

这是JavaScript:

var potatoes = 0, 
    autoFarmer = 0, 
    defaultAutoFarmerPrice = 17; 

function buy(obj, price, potatoes) { 
    if (potatoes > price) { 
     obj++; 
     console.log(obj); 
    } 
} 
+3

你看控制台输出?请解释“不起作用”更好。 – Difster

回答

0

Js原语通过值传递。因此增加obj增加obj但不是autoFarmer。一个可能的解决方案将使用对象:

var potatoes = {value:0}, 
autoFarmer ={value: 0,price:17}; 

function buy(obj, potatoes) { 
    if (potatoes.value > obj.price) { 
    obj.value++; 
    console.log(obj.value); 
    } 
} 

buy(autoFarmer,potatoes); 
+0

对不起,这是一个回答问题花了这么长时间!这实际上工作,我改变了所有的变量对象,使其更容易下线。感谢您提出这个建议! – Potato

0

您的代码按预期工作,没有错误。您发送的土豆为0,价格为17. 只有当potatoes > price时,控制台日志才会写入输出,但现在情况并非如此。

0

代码工作..只要设置土豆的价格比和警报更大会火

var potatoes = 18, 
 
    autoFarmer = 0, 
 
    defaultAutoFarmerPrice = 17; 
 

 
function buy(obj, price, potatoes) { 
 
    if (potatoes > price) { 
 
     obj++; 
 
     alert(obj); 
 
    } 
 
}
<button onClick="buy(autoFarmer, defaultAutoFarmerPrice, potatoes)" id="buyautofarmer">Buy Auto Farmer</button>

0

这里是你的代码的输出

https://plnkr.co/edit/9UuhG5q82OvVlrOG2UXw?p=preview

var potatoes = 0, 
    autoFarmer = 0, 
    defaultAutoFarmerPrice = 17; 

function buy(obj, price, potatoes) { 
    document.querySelector('#output').value += '\nobj = ' + obj; 
    document.querySelector('#output').value += '\nprice = ' + price; 
    document.querySelector('#output').value += '\npotatoes = ' + potatoes; 

    if (potatoes > price) { 
     obj++; 
     console.log(obj); 
     document.querySelector('#output').value += '\nobj = ' + obj; 
    } 
} 

Keep cl舔按钮,你可以看到你的价值打印。

您应该学习如何使用调试器,您可以逐步浏览代码并查看每个步骤中的值。

相关问题