2017-07-02 85 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舔按鈕,你可以看到你的價值打印。

您應該學習如何使用調試器,您可以逐步瀏覽代碼並查看每個步驟中的值。

相關問題