2017-05-14 42 views
0

林在規劃新的IM試圖讓我的第一個項目在JS - 劊子手遊戲(https://en.wikipedia.org/wiki/Hangman_(game)上點擊設置變量值

所以基本上我在我的HTML文件中的兩個按鍵,可以說,它是這樣的:

<button id="movies">Movies</button> 
<button id="animals">Animals</button> 

我希望這個按鈕負責改變我遊戲中的類別。在JS我得到:

var movies = ["Shawshank Redemption","Alice in a Wonderland"]; 
var animals = ["Blue whale","Raspberry Crazy-Ant"]; 

var choice = 1; 

if (choice === 0){ 
    var pwdDraw = Math.floor(Math.random() * movies.length); 
    var pwd = movies[pwdDraw]; 
    pwd = pwd.toUpperCase(); 
    document.write(pwd); 
    } 
else if (choice === 1){ 
    var pwdDraw = Math.floor(Math.random() * animals.length); 
    var pwd = animals[pwdDraw]; 
    pwd = pwd.toUpperCase(); 
    document.write(pwd); 
} 

而這正是IM stucked的地方,我不知道如何改變VAR選擇通過點擊按鈕(我也想點擊後重新加載頁面)。我在js開始的路上,所以我想這個代碼是純js,而不是任何定製的庫。

+0

你不想用這樣的HTML混合的JavaScript ....我也建議不要使用'文件.wrtie()'如果我是你,我會追加新元素或更新編輯元素。也許一個關於使用javascript的初學者教程將會對你有用。它將幫助您瞭解javascript如何工作以及如何使用您的應用程序來運行它。也不應該'animals.length'和'動物[pwdDraw];'是'filmy.length'和'filmy [pwdDraw];'因爲'animals'不存在但是'filmy'確實...... – NewToJS

+0

好吧,我決定寫一些你可能會覺得有用的東西,因爲我假設你打算添加更多的按鈕和數組。用你現在擁有的東西,你將永遠在一個if/elseif中重複源代碼,所以這裏的東西只需要很少的更新。只有你需要添加的是一個按鈕和數組,JavaScript將負責其餘的部分。 https://jsfiddle.net/1py4c3py/關於如何工作的細節在小提琴中解釋 – NewToJS

回答

0

只要您可以使用onclick事件。經過一些更改後,你的代碼應該像這樣。

var movies = ["Shawshank Redemption", "Alice in a Wonderland"]; 
 
var animals = ["Blue whale", "Raspberry Crazy-Ant"]; 
 

 
var catname = document.getElementById('cat-name'); 
 

 
function selectCategory(choice) { 
 
    var pwd, pwdDraw; 
 
    if (choice === 0) { 
 
    pwdDraw = Math.floor(Math.random() * movies.length); 
 
    pwd = movies[pwdDraw]; 
 
    } else if (choice === 1) { 
 
    pwdDraw = Math.floor(Math.random() * animals.length); 
 
    pwd = animals[pwdDraw]; 
 
    } 
 
    pwd = pwd.toUpperCase(); 
 
    catname.innerText = pwd; 
 
}
<p>Choose Category</p> 
 
<button id="movies" onclick="selectCategory(0)">Movies</button> 
 
<button id="animals" onclick="selectCategory(1)">Animals</button> 
 

 
<div id="cat-name"></div>

更妙的使用對象和數組

var categories = { 
 
    movies: ["Shawshank Redemption", "Alice in a Wonderland"], 
 
    animals: ["Blue whale", "Raspberry Crazy-Ant"] 
 
}; 
 

 
var catname = document.getElementById('cat-name'); 
 

 
function selectCategory(choice) { 
 
    var pwdDraw = Math.floor(Math.random() * categories[choice].length); 
 
    var pwd = categories[choice][pwdDraw]; 
 
    pwd = pwd.toUpperCase(); 
 
    catname.innerText = pwd; 
 
}
<p>Choose Category</p> 
 
<button id="movies" onclick="selectCategory('movies')">Movies</button> 
 
<button id="animals" onclick="selectCategory('animals')">Animals</button> 
 

 
<div id="cat-name"></div>

+0

你能解釋一下爲什麼這段代碼只能在'run code snippet'中工作嗎?當即時複製完全相同的代碼到例如括號它不工作? – isnx

+0

你是什麼意思「它不工作」?任何錯誤? – Oen44

0

首先,不要把那些<br>在JS代碼這樣的。
如果你想嘗試通過點擊按鈕來獲得選擇,那麼這裏是你如何能做到這一點:

HTML

<button id="movies" class="choice" value="0">Movies</button> 
 
<br/> 
 
<button id="animals" class="choice" value="1">Animals</button>

JS

var buttons = document.querySelectorAll(".choice"); 
 

 
function doSomething(e) 
 
{ 
 
    // You can get choice value by either doing: 
 
    var choice = e.target.value; 
 
    // OR 
 
    var choice = this.value; 
 
    
 
    // Continue your work here 
 
} 
 

 
for(var i = 0; i < buttons.length; i++) 
 
{ 
 
    buttons[i].addEventListener("click", doSomething); 
 
}

隨時問任何問題。

+0

大家好,非常感謝大家的反饋意見,但是我仍然遇到了一些實施這個js修改的麻煩,當我在新文件中只使用類別轉換器時,一切都運行平穩。但是,當我嘗試將這添加到我現有的代碼它根本不工作。 – isnx

0

非常感謝大家的反饋,但是我仍然遇到了一些實現這個js修改的麻煩,當我在新文件中只使用類別轉換器時,一切都運行平穩。但是,當我嘗試將這添加到我現有的代碼它根本不工作。在這裏,你得到了我的代碼:

codepen.io/iSanox/project/editor/DGpRrY/