2014-02-06 63 views
0

所以我做了一個諷刺餅乾點擊者爲基礎的遊戲作爲我的第一個JS遊戲。簡單的javascript:「參考錯誤:'點擊'是不確定的」

我做了一個JSFiddle。 (圖像不會顯示,但圖像應該是一個贓物帽子,你點擊以獲得swag點)。我的代碼很簡單,但我想知道爲什麼它告訴我我的click()函數未定義。它在頭部被提及,我不知道什麼是錯的。

http://jsfiddle.net/69mJq/

HTML:

<html> 
<head> 
    <title>Swag Dealr</title> 
    <script src="swagdealr.js"></script> 
    <link rel="shortcut icon" type="image/x-icon" href="img/favicon.ico" /> 
</head> 
<body> 

    <h3>SWAG DEALR</h3> 
    <a href="JavaScript:click()"><img src="img/swaghat.png"></a> 
    <p>grams of swag</p> 
    <p id="swagnumber"></p> 
    <p id=></p> 

</body> 
</html> 

JS:

Game={}; 

Game.Launch = function() { 
} 




window.onload = function() { 
    Game.Load(); 
};   

Game.Load = function() { 
    var swagAmount = 0; 
    function click() { 
     swagAmount + (1 * swagMultiplier) = swagAmount; 
     document.getElementById("swagnumber").innerHTML = swagAmount; 
    } 
}   
+1

你在做什麼?這是什麼代碼? –

+0

我在我的HTML文件中創建一個圖像;點擊圖片將執行click();並且該函數在JS文件中定義,但Chrome中的命令行告訴我每次單擊圖像時click()都是未定義的。 – BitLion

+0

我是一個新人,所以我決定從一些容易變得更大的東西開始;所以我開始使用cookie-clicker類型的遊戲,點擊帽子圖像(在JSFiddle中打破)會給你點數。 – BitLion

回答

1

更新您的JS如下所述:

Game={}; 

Game.Launch = function() { 
} 

window.onload = function() { 
    Game.Load(); 
};  

Game.Load = function() { 
} 

var swagAmount = 0; 
function click() { 
     swagAmount = swagAmount + (1 * swagMultiplier); 
     document.getElementById("swagnumber").innerHTML = swagAmount; 
    } 

無te:有一件事我注意到,swagMultiplier沒有在任何地方定義。

+0

它將我發送到名爲/ documents/swagdealr/click()的文件中不存在的子目錄,但無效。 – BitLion

+0

更新了我的答案。保持** Game.Load **以外的點擊事件,並像我在筆記 – SpiderCode

+0

中提到的那樣定義** swagMultiplier **謝謝,明白了。我擺脫了swagMultiplier,並將swagAmount拉出來並使其成爲全球變種。 – BitLion

1

這是因爲你的click()方法被封裝在一個匿名函數中。外拖動它,它會工作:

Game.Load = function() { 
    var swagAmount = 0; 
} 
function click() {...} 

看到這個小提琴:http://jsfiddle.net/JohnnyWorker/69mJq/6/

+0

它擺脫了'click is undefined'錯誤,但現在它給了我錯誤「分配中無效的左側」。 – BitLion

+1

是的,我也注意到了。你必須檢查你的代碼,我註釋掉了。你不覺得「swagAmount +(1 * swagMultiplier)= swagAmount;」可能不是一個有效的陳述? – Johnny

+0

哈哈,有趣的評論,儘管它不是一個「匿名函數」。 ;)http://stackoverflow.com/questions/1140089/how-does-an-anonymous-function-in-javascript-work – loveNoHate

0

我們已經在你的代碼的兩個問題

  1. 您錯誤地分配給它
swagAmount + (1 * swagMultiplier) = swagAmount; 

它應該是

swagAmount = swagAmount + (1 * swagMultiplier);

  1. 您要添加的click事件到Game.Load(即使它可能),爲了簡單起見,我們可以點擊方法加入到遊戲中的對象。

示例代碼

Game.click = function() { 
    swagAmount = swagAmount + (1 * swagMultiplier); 
     document.getElementById("swagnumber").innerHTML = swagAmount; 
} 

JS小提琴演示在DEMO

注意

我們需要停止使用event.preventDefault()鏈接的默認行爲

1

簡短回答:你已經有了Scope

龍答:

Game.Load = function() { 
    var swagAmount = 0; 
    function click() { 
    swagAmount = swagAmount + (1 * + "swagMultiplier?"); 
    document.getElementById("swagnumber").innerHTML = swagAmount; 
    console.log('clicked') 
    } 
    window.click = click; 
}   

你有swagAmount =逆轉,從而給人一種left hand assignment error
什麼是swagMultiplier,你從來沒有分配它,所以我把它放在""來承認這一點。

的jsfiddle:http://jsfiddle.net/69mJq/7/

2
Game={}; 
Game.Load = function() { 
    var swagAmount = 0; 
    Game.click(swagAmount); 

} 
Game.click = function(swagAmount) { 
    var swagMultiplier= 5 
    swagAmount = swagAmount + (1 * swagMultiplier) ; 
    document.getElementById("swagnumber").innerHTML = swagAmount; 
} 
Game.Load(); 

我已經定義swagMultiplier及其工作的罰款。改變href爲

<a href="Game.click()"><img src="img/swaghat.png"></a>